我試圖在我的.htaccess
文件中用戶RewriteRule
將example.com/page重定向到example.com/page.php(或將.php
添加到任何請求的文件中,該文件沒有。擴展htaccess如果找不到頁面,則RewriteRule失敗
我想:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(.*)\.php
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/.]+)$ $1.php [R] #I also tried ^(.+)$ with no effect
從"Spoofing" a 404 not found error with .htaccess
我想這沒有其他RewriteRule
在我的.htaccess,但它仍然只是通過解析爲404錯誤頁面ErrorDocument
。如果找不到請求的頁面,我嘗試使用的所有其他規則也會完全跳過。如果請求的url解析爲現有頁面或目錄,則我指定的任何規則都有效。
我有一個Godaddy共享主機Linux服務器。我非常確定我無法編輯我的httpd.conf文件。
我想知道是否有人可以告訴我爲什麼我的RewriteRule
被忽略當原始請求不是文件或目錄 - 當它不存在。
謝謝你的幫助。
編輯:
我現在看到的,如果我去mysite.com/index.php重寫規則的作品。如果我去mysite.com/index RewriteRule不起作用。如果我去了一個根本不存在的頁面 - mysite.com/asdfasdfsadf,那麼我的RewriteRule就可以工作。所以它只能在現有url的無擴展版本上失敗。
同樣的結果。如果我轉到mysite.com/index.php加載它,但如果我轉到mysite.com/index,它會告訴我「在此服務器上找不到所請求的URL /索引。」 – Jakar 2012-02-22 16:33:04
不是100%確定我做了什麼。我幾個小時一直在搞亂.htaccess。但是我最後在'RewriteEngine On'上面添加了'Options -MultiViews'。我還加了'RewriteBase /'。這解決了我的問題。謝謝。 – Jakar 2012-02-22 21:08:34