簡體   English   中英

文件擴展名后的斜杠無法重定向

[英]Slash after file extension can not be redirected

我正在使用這些htaccess代碼刪除php擴展名並將其重定向到沒有文件擴展名的地方。

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

然后我嘗試使用另一個稍微不同的代碼

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.[a-zA-Z0-9]+$ $1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

如果嘗試訪問,兩個代碼都會產生相同的問題

  1. domain.com/other/content.php轉到domain.com/other/content(200個響應)

現在,如果嘗試訪問,這是一種奇怪的行為

  1. domain.com/other/content.php/轉到domain.com/other/content.php/(200響應而不是404)

  2. domain.com/other/content.php/any-word轉到domain.com/other/content.php/any-word(200響應而不是404錯誤)

除此問題外,所有其他重定向都可以正常工作。 任何人都可以同時使用這兩個代碼嗎,我需要兩個代碼都更正,因為我有兩個使用htaccess規則的不同站點。

如果我保留兩個代碼

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

另外,我添加了新代碼然后就可以了

RewriteEngine On
RewriteCond %{THE_REQUEST} /([^.]+)\.php/? [NC] 
RewriteRule ^ /%1/ [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /$1.php [L,NC]

暫無
暫無

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

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