将.php仅重定向到非动态网址的无扩展名网址

时间:2012-01-22 13:08:31

标签: .htaccess mod-rewrite redirect

我正在尝试将带有.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]

任何人都可以帮我调整条件,以防止动态网址被重写。

1 个答案:

答案 0 :(得分:1)

尝试以下方法。确保\.php\和`[NC]

之间有2个空格
RewriteEngine on
RewriteBase /

#any url with .php and no anchor or query string
RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^\ ]+)\.php\  [NC]
RewriteRule ^ /%1 [R=301]