我有一个像这样的查询字符串的URL:
www.blablabla.com/index.php?page=details&p_name=van-der-var&p_country=holland
我想重写网址如下:
www.blablabla.com/van-der-var-holland.html
我可以这样做:
www.blablabla.com/van_der_var-holland.html
但我需要在名称和其他参数中使用相同的符号。有可能吗?
我当前的.htaccess
文件如下所示:
RewriteRule ^p-([A-Za-z0-9_]+)-([A-Za-z0-9_]+)\.html$ index\.php?main_page=person&p_name=$1&p_country=$2 [L]
答案 0 :(得分:1)
我无法通过在变量和变量中的单词之间使用相同的分隔符来考虑解决问题的方法,即考虑到您的国家/地区名称可能是2个或更多单词。如果国家总是一个字,@ faa的解决方案就能满足您的需求。否则,我会建议如下:
<强> van_der_var-holland.html 强>
RewriteRule ^([a-zA-Z0-9_]+)-([a-zA-Z0-9_]+).html$ index.php?page=details&p_name=$1&p_country=$2&%{QUERY_STRING}
<强> VAN-DER-var_holland.html 强>
RewriteRule ^([a-zA-Z0-9-]+)_([a-zA-Z0-9-]+).html$ index.php?page=details&p_name=$1&p_country=$2&%{QUERY_STRING}
<强> VAN-DER-VAR / holland.html 强>
RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+).html$ index.php?page=details&p_name=$1&p_country=$2&%{QUERY_STRING}
或类似于任何其他分隔符的东西,例如逗号。
答案 1 :(得分:0)
你可以在根目录的.htaccess文件中尝试这样的东西:
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !index\.php [NC]
RewriteRule ^(.*)-([^.]+)\.html/? /index.php?main_page=person&p_name=$1&p_country=$2 [L,NC]
将静默地映射:
http://example.com/par1-par2.html
要:
http://example.com/index.php?main_page=person&p_name=par1&p_country=par2
字符串 par1 和 par2 被认为是可变的。
对于永久和可见的重定向,将[L,NC]替换为[R = 301,L,NC]