[英]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.