首先,我尝试在主题中找到解决方案,但没有找到与我的问题相近的内容,所以我决定在这里提问。我是初学者,当涉及到htacces和动态重定向时,所以我希望我能从你的帮助中了解更多。
我需要将旧的动态网址重定向到htaccess中301重定向的新网址格式。
我的格式有城市列表的数据库:
http://www.exampledomain.com/city/1_NewYork/
我想将我的网址更改为新格式,如下例所示:
http://www.exampledomain.com/1_NewYork/
我在数据库中有超过300个城市,我希望将旧网址重定向到新格式,并自动重定向301,因此我不必在htaccess中为每个城市键入手动301重定向。
RewriteEngine On
RewriteRule ^ city /([ - ]?[0-9] +)([ - _] [^ /] *)? index.php?view = main& cityid = $ 1 [QSA]
对不起我的英语,我知道它不是最好的:)
提前致谢。
答案 0 :(得分:1)
您可以将此规则用作第一条规则,然后再使用其他规则:
RewriteEngine On
RewriteRule ^city/([^/]+)/?$ /$1 [L,NC,R=302]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/?$ index.php?view=main&cityid=$1 [L,QSA]
答案 1 :(得分:0)
您可以尝试重定向:
重定向301 / city / 1_NewYork / / 1_NewYork /
答案 2 :(得分:0)
您可以使用RedirectMatch
。
RedirectMatch 301 /city/(.*) /$1
并用
替换您的重写规则RewriteRule ^([-]?[0-9]+)([-_][^/]*)? index.php?view=main&cityid=$1 [QSA]
请参阅http://httpd.apache.org/docs/2.2/mod/mod_alias.html#redirectmatch