用.htaccess重写网址

时间:2012-11-27 14:58:37

标签: php .htaccess url-rewriting

我有一个网站,我这样链接:

a href="?lang=en&p=3"

我的网址是这样的:

http://www.mywebsite.com/?lang=en&p=3

但我希望我的网址变成这样:

http://www.mywebsite.com/english/about-us

我知道你有这样的事情:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^([a-zA-Z]+)/([0-9]+)/$ ?lang=$1&p=$2

但它不起作用......

有人可以帮我解决这个.htaccess文件吗?

我是否还要改变我的href url?

提前致谢!

亲切的问候

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

RewriteCond %{QUERY_STRING} ^lang=([a-zA-Z]*)&p=(.*)$
RewriteRule ^(.*)$ /%1/%2? [R=301,L]


这将使301重定向:
http://www.mywebsite.com/?lang=en&p=3
于:
http://www.mywebsite.com/en/3

如果您需要其他一些重定向规则,请根据需要修改该规则,例如:根据规则列出更具体的RewriteCond列表。

答案 1 :(得分:1)

如果您的网站需要p = 3

等参数,请将其与硬编码页面名称一起使用
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/about-us$ ./?lang=$1&p=3 [QSA]
RewriteRule ^(.*)/another-page$ ./?lang=$1&p=4 [QSA]
</IfModule>

如果您修改网站以使其接受p = about-us等参数,则会更简单:

http://www.mywebsite.com/?lang=en&p=about-us

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)/(.*)$ ./?lang=$1&p=$2 [QSA]
</IfModule>

如果你不改变你的href网址,这一切都没有意义,因为谷歌即使工作也不会看到纯文本网址(没人会)。