通过.htaccess更改动态URL

时间:2014-09-27 13:38:23

标签: regex apache .htaccess mod-rewrite

我想将网址从http://example.com/?a=cust&page=abc更改为http://example.com/abc

我尝试了下面提到的代码,但它让我陷入困境:

RewriteEngine On

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+\?a=cust&page([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /?a=cust&page$1 [L,QSA]

那么有关如何使其正常工作的任何帮助? :)

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先RewriteCond中的正则表达式是不正确的。您可以使用:

RewriteEngine On
RewriteBase /

RewriteCond %{THE_REQUEST} \s/+\?a=cust&page=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ ?a=cust&page$1 [L,QSA]

修改

这是您想要的新规则:

RewriteCond %{THE_REQUEST} \s/+\?a=([^\s&]+) [NC]
RewriteRule ^ /%1? [R=301,L]