簡體   English   中英

無法解決.htaccess網址重寫程序,為所有頁面提供404

[英]Unable to solve .htaccess url rewriterule, gives 404 for all pages

我想顯示如下示例所示的URL:

1) http://www.domainname.com/detail/name/123.html

2) http://www.domainname.com/detail/124.html

在兩個URL中,我要顯示“名稱”是否存在,然后要顯示帶有“名稱”的URL,否則不顯示“名稱”。

1) RewriteRule ^detail/(.*).html$ detail.php?id=$1 [QSA]
2) RewriteRule ^detail/(.*)/(.*).html$ detail.php?id=$2 [QSA]

第一條規則是沒有“名稱”的工作文件。 第二條規則不起作用,並為所有頁面提供404。

提前致謝。

您只能使用一個規則來處理這兩種情況:

RewriteRule ^detail/(?:[^/]+/)?([^./]+)\.html$ detail.php?id=$1 [L,NC,QSA]

您遇到的問題是,第一個規則與您的第一種情況和第二種情況都匹配。 顯然,當id為name/123您的應用程序將無法處理它。 您要做的是將字符限制為非斜杠字符。 畢竟,這意味着它只能匹配最后一個路徑段。 除此之外,強迫自己總是在正則表達式中轉義文字點。 如果您不這樣做,圓點幾乎可以匹配任何東西...

RewriteRule ^detail/([^/]+)\.html$ detail.php?id=$1 [QSA,L]
RewriteRule ^detail/[^/]+/([^/]+)\.html$ detail.php?id=$1 [QSA,L]

暫無
暫無

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

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