我正在尝试将带有.php扩展名的页面重定向到其无扩展版本。使用下面的规则,带有查询参数的页面会失败(signup.php?login = true)或导致重定向循环。
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301]
我因此想要排除动态网址(无论如何重写它们似乎没有意义)。我已经编写了下面的代码,但条件仍然似乎与动态网址相匹配。
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php\ HTTP/
RewriteRule ^(([^/]+/)*[^.]+)\.php$ /$1 [R=301]
任何人都可以帮我调整条件,以防止动态网址被重写。
答案 0 :(得分:1)
尝试以下方法。确保\.php\
和`[NC]
RewriteEngine on
RewriteBase /
#any url with .php and no anchor or query string
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^\ ]+)\.php\ [NC]
RewriteRule ^ /%1 [R=301]