我想使用htaccess进行以下重定向:
来自:http://www.mywebsite.com/home/?page_id=273&mnth=8&yr=1993
但是,除了 page_id 之外,所有参数都会发生很大变化,因此,如果可以重定向所有这些页面而不必为每种可能性执行一次,那么这将是理想的选择。
提前感谢您收到任何帮助,
答案 0 :(得分:1)
我认为RedirectMatch仅适用于Url路径 - 即不是查询字符串。
但可以使用mod_rewrite
RewriteEngine on
RewriteCond %{QUERY_STRING} page_id=273
RewriteRule home/.* /path/to/new.html [L,R]
答案 1 :(得分:1)
您还可以将任何不存在的页面重定向到主页,让您的应用程序从那里处理
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
答案 2 :(得分: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]
这样您就可以将新网址用作:http://www.mywebsite.com/home/273/8/1993
,并打开http://www.mywebsite.com/?page_id=273&mnth=8&yr=1993
。
您当然也可以动态设置273。
答案 3 :(得分:0)
由于涉及重定向的数量,最佳答案是针对每种可能性使用特定规则手动重定向每个URL。不幸的是,没有提供的答案得到了帮助。