301动态网址重定向到新的动态网址

时间:2014-12-16 15:46:37

标签: php apache .htaccess redirect dynamic-url

首先,我尝试在主题中找到解决方案,但没有找到与我的问题相近的内容,所以我决定在这里提问。我是初学者,当涉及到htacces和动态重定向时,所以我希望我能从你的帮助中了解更多。

我需要将旧的动态网址重定向到htaccess中301重定向的新网址格式。

我的格式有城市列表的数据库:

http://www.exampledomain.com/city/1_NewYork/

我想将我的网址更改为新格式,如下例所示:

http://www.exampledomain.com/1_NewYork/

我在数据库中有超过300个城市,我希望将旧网址重定向到新格式,并自动重定向301,因此我不必在htaccess中为每个城市键入手动301重定向。

当前Htaccess:

  

RewriteEngine On

     

RewriteRule ^ city /([ - ]?[0-9] +)([ - _] [^ /] *)?     index.php?view = main& cityid = $ 1 [QSA]


对不起我的英语,我知道它不是最好的:)

提前致谢。

3 个答案:

答案 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