2013-12-18 153 views
1

我有一個像book.php?id=23和使用htaccess的URL以使其book/id/title 我想這奇怪的URL重寫規則的.htaccess問題需要交代

RewriteRule ^book/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA] 

,但它沒有工作,它轉發到books.php但沒有$_REQUEST數據 事實證明,這是因爲URL引用是相同的名稱作爲PHP文件我的幫助呼籲從社區來解決這個工作

RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA] 

這是我目前的工作的.htaccess:

RewriteEngine On 
RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA] 
RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA] 
RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA] 

PeteR

我見過的每一個在線教程使用像^產品和 product.php,或^類別和類別的例子。所以我不知道爲什麼這個 應該。也許別人可以對此有所瞭解?

回答

0

很可能你有MultiViews與重寫規則衝突。

Fulle的.htaccess:(進去DOCUMENT_ROOT目錄)

Options +FollowSymLinks -MultiViews 

RewriteEngine On 

RewriteRule ^kitap/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA] 
RewriteRule ^yyin/([0-9]+)/([^/]+)/?$ yayin.php?id=$1 [NC,L,QSA] 
RewriteRule ^proje/([0-9]+)/([^/]+)/?$ project.php?id=$1 [NC,L,QSA] 

RewriteRule ^books/([0-9]+)/([^/]+)/?$ book.php?id=$1 [NC,L,QSA] 
+0

我試過,導致重定向循環 – ImadBakir

+0

我甚至沒有提供任何規則,所以肯定重定向循環是由現有規則/代碼引起的。如果您在問題中發佈完整的.htaccess,我可以調查並提出修復建議。 – anubhava

+0

你可以在你的問題中發佈你現有的.htaccess嗎? – anubhava

1

我開始後,我們對你原來的問題小的討論與此搗亂,我開始認爲這取決於服務器的配置和無論它是否會運行無擴展腳本。

我的dev的服務器,例如,將運行擴展名的腳本,即輸入/ XYZ顯示xyz.php

RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA] 

重寫規則不起作用,但是

RewriteRule ^categories/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA] 

確實有效。

在我的託管服務器,它不支持extentionless腳本,www.mydomain.com/xyz會給我一個404錯誤,但:

RewriteRule ^category/([0-9]+)/([^/]+)/?$ category.php?id=$1 [NC,L,QSA] 

按預期工作。

我只能假設當服務器支持擴展腳本時,如果別名與腳本名稱相同,則重寫規則將被忽略。

+0

我也在我的服務器上工作過,我的服務器支持無延伸腳本,巧合?不要想。 同樣的情況下,我不支持無限制腳本的其他主機工作得很好。 – ImadBakir