2011-05-09 163 views
4

我正在使用mod_rewrite重寫/產品/products.php。我得到這個代碼/.htaccess誰在我的網址末尾添加了斜槓?

Options FollowSymLinks 
RewriteEngine on 

RewriteRule ^([a-zA-z]+)$ /$1.php [PT,L] 

不幸的是也有一個文件夾,我的服務器上/產品/

我的問題是,當我嘗試訪問http://mydomain.com/products我的請求重定向到http://mydomain.com/products/和顯示我的錯誤,因爲我不沒有該目錄的索引。

誰在重新定向我? Apache,我的UserAgent? 如何防止發生這種情況而不更改文件夾名稱或重寫規則?

+1

使用mod_rewrite如何?請向我們展示'mod_rewrite'規則 - 在某些情況下,現有文件和文件夾優先於mod_rewrite。 – Piskvor 2011-05-09 15:33:14

回答

5

您需要查看「DirectorySlash指令」。

的DirectorySlash指令 決定mod_dir是否應該 修正的URL指向一個目錄或 沒有。

http://httpd.apache.org/docs/2.2/mod/mod_dir.html

您也可以嘗試添加一個可選的斜槓你重寫規則:

RewriteRule ^([a-zA-z]+)/?$ /$1.php [PT,L] 

Trailing slashes problem

+0

我在.htaccess文件中添加了「DirectorySlash Off」,但仍然是重定向。 – sauerburger 2011-05-09 15:45:23

+0

@esel嘗試其他解決方案。也許它對你更容易。 – zaf 2011-05-09 15:58:11

+0

是的,這與我從Marms發佈的想法完全一樣。謝謝。 – sauerburger 2011-05-09 16:00:41

2

每一個瀏覽器是您的請求後,將最後的斜線,如果它不」 t由「.something」因爲它認爲它是一個文件夾。爲了避免這種情況,你重寫規則應該是這樣的:

重寫規則/products(.*)$ /index.php?page=products

OR

重寫規則/產品/index.php?page =產品

這樣,它會重寫每一個帶有「/ products」的請求,有或沒有斜線。

唯一的問題是您的文件夾/產品/將無法通過http請求訪問。如果需要,您必須更改文件夾或頁面名稱。

+0

謝謝。我可以將規則更改爲RewriteRule ^([a-zA-z] +)\ /?$ /$1.php [PT,L],因此只有/ products和/ products /被重寫,而不是其他請求。 – sauerburger 2011-05-09 15:55:57

1

您可能已在您的Apache上啓用MultiViews

+0

爲您的「Trailing斜槓問題」答案+1。 – zaf 2011-05-09 16:06:56

相關問題