2012-03-18 61 views

回答

0

处理它由于涉及重定向的数量,最好的答案是使用每种可能性的特定规则手动重定向每个URL。不幸的是,所提供的答案中没有提供帮助

0

您可以使用一个简单的重写条件实现这一点,在你的.htaccess ,添加:

Options +SymLinksIfOwnerMatch 
RewriteEngine On 

# These are the rewrite conditions 
RewriteCond  %{REQUEST_FILENAME}  !-f 
RewriteCond  %{REQUEST_FILENAME}  !-d 

# And finally, the rewrite rules 
RewriteRule ^home/273/([0-9]+)/([0-9]+)/?$ /home/?page_id=273&mnth=$1&yr=$2 [L,NC,QSA] 

这样,您将使用新的URL为:http://www.mywebsite.com/home/273/8/1993,它会打开http://www.mywebsite.com/?page_id=273&mnth=8&yr=1993

您当然也可以动态设置273。

+0

我需要http://www.mywebsite.com/home/?page_id=273&mnth=8&yr=1993打开http://www.mywebsite.com/ - 所以这不起作用遗憾 – Tisch 2012-03-18 19:50:08

+0

您必须指定你想在地址栏上看到什么网址**可见**,以及你想在服务器上执行哪些文件/参数 – aurbano 2012-03-18 19:52:10

+0

我需要清理一大堆搜索引擎结果并将它们全部重定向到主页,所以我无法控制或指定URL中的内容。 – Tisch 2012-03-18 20:10:15

1

我认为RedirectMatch只适用于Url路径 - 即不是查询字符串。

,但可以使用mod_rewrite

RewriteEngine on 
RewriteCond %{QUERY_STRING} page_id=273 
RewriteRule home/.* /path/to/new.html [L,R] 
1

你也可以重定向任何不存在的页面的主页,让您的应用程序从那里

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule>