.htaccess没有从旧网址重定向到新网址3

时间:2014-11-07 12:38:10

标签: php apache .htaccess mod-rewrite redirect

我是.htaccess的新人。我已阅读文档,但无法使重定向规则有效。

我希望RewriteRule关注

http://mywebsite.com/restaurants/59393/the-grounds-of-alexandria.htm

http://mywebsite.com/restaurants/the-grounds-of-alexandria

我试过了这个

RewriteRule ^(.*)/[0-9]/(.*)$ ^(.*)/(.*)/$ [R=301,L]

另外,你如何获得子域并将其放在所有链接的前面,比如

http://sydney.mywebsite.com/restaurants/59393/the-grounds-of-alexandria.htm

http://mywebsite.com/sydney/restaurants/the-grounds-of-alexandria

但没有结果。

1 个答案:

答案 0 :(得分:3)

重写这很简单:

http://mywebsite.com/restaurants/59393/the-grounds-of-alexandria.htm
to
http://mywebsite.com/restaurants/the-grounds-of-alexandria

您的重写规则RewriteRule ^(.*)/[0-9]/(.*)$ ^(.*)/(.*)/$ [R=301,L]对于网址而言过于全球化。其次,你只说[0-9]只意味着一位数。

RewriteRule ^([^/]+)/[0-9]+/([^.]+)\.htm$ /$1/$2 [R=301,L]

试试这个;)


编辑(第二个问题):

http://sydney.mywebsite.com/restaurants/59393/the-grounds-of-alexandria.htm
to 
http://mywebsite.com/sydney/restaurants/the-grounds-of-alexandria

当然;)你必须使用RewriteCond。

RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([^\.]+)\.mywebsite\.com/([^/]+)/[0-9]+/([^.]+)\.htm
RewriteRule ^.*$ http://mywebsite.com/%1/%2/%3 [R=301,L]

为了便于说明,可以在上一个匹配项中使用%1-3,以便在RewriteRule语句中使用。这适用于每个子域,仅适用于子域。如果您需要特定的子域名,可以将第一行调整为^(sidney|othersubdomain|anothersubdomain)\.mywebsite\.com...