簡體   English   中英

將 /foo 重寫為 /foo.php 不起作用

[英]Rewriting /foo to /foo.php doesn't work

我希望用戶能夠 go 到 /foo 並顯示 /foo.php。 在谷歌上快速搜索得出了這個:

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

但是,由於某種原因,這不起作用。 即使我知道 .php 文件存在,我仍不斷收到 404 錯誤。 我搜索並搜索了一個答案,但它似乎對其他人來說都很好。

順便說一句,我注釋掉了其他規則,所以沒有什么與此沖突的。

有任何想法嗎?

這就是你需要的:

Options +FollowSymLinks 
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

也許您需要在 apache 配置中添加指令AllowOverride All或者您可能需要在 .htaccess 文件的開頭添加RewriteEngine On

你需要這條規則:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /$1.php

我找到了答案。 顯然這是1and1的服務器配置的問題:這篇文章解釋了這個問題: http://tips.webdesign10.com/web-hosting/why-you-should-never-use-1and1-com-hosting

第一條評論也恰好是解決方案。 這是有效的規則:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ /$1.php [L,QSA]

或者,您可以使用 apache 的MultiViews選項:

Options +MultiViews

在子文件夾中使用.htaccess時會出現此問題。 通過使用.htaccess文件中 web 根目錄的完整路徑來修復它。 例如,在http://www.mysite.com/test/文件夾中,您的.htaccess文件將如下所示:

RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ /test/$1.php

-未測試,可能需要調整-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM