htaccess mod url重写

时间:2018-03-06 22:04:43

标签: .htaccess mod-rewrite url-rewriting

我正在重建一个旧网站,并且有一堆旧网址,我正在重新编写问题。

例如,我的一些旧网址的结构如下:

mydomain.com/?x=about-us **and** mydomain.com/?x=services

我希望这些示例能够重写或重定向到以下内容:

mydomain.com/about-us **and** mydomain.com/services

基本上,如果网址中出现'?x =',我想将其删除。

目前我在.htaccess中唯一的其他cond /规则是删除'.php'。扩展。

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

这很好用,并允许我编写没有'.php'扩展名的内部链接,如下所示:

<a href="about-us">link</a>

这将我发送到'mydomain.com/about-us',这就是我想要的。我的问题是使用'?x ='

处理网址

任何帮助将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在站点根目录中使用这些规则.htaccess:

RewriteEngine On

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} \s/+(?:index\.php)?\?x=([^\s&]+)\s [NC]
RewriteRule ^ /%1? [R=301,L,NE]

# add .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]

# internal forward from pretty URL to actual one
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ ?x=$1 [L,QSA]