我正在尝试获取以下路径:/faculty/index.php?PID=FirstLast&type=alpha
要重写为:/faculty/FirstLast
我是否正确认为以下内容可以接受.htaccess?
# Rewrite old URLS
RewriteCond %{QUERY_STRING} ^PID=([0-9a-zA-Z]*)$
RewriteRule ^/faculty/index.php$ /faculty/%1 [R=302,L]
我可以扔掉任何其他查询字符串变量。我在.htaccess文件级别应用这些规则。该项目是从旧系统迁移到Drupal。
我的.htaccess看起来像
# Rewrite old URLS
RewriteCond %{QUERY_STRING} PID=([0-9a-zA-Z]*)
RewriteRule ^faculty/ /faculty/%1/? [R=301,L]
RewriteCond %{QUERY_STRING} vidID=([0-9]*)
RewriteRule ^videos/ /video/id/%1/? [R=301,L]
我还发现了这个很棒的工具 - 一个mod_rewrite测试器 http://htaccess.madewithlove.be/
一切都好!
答案 0 :(得分:1)
请改为尝试:
RewriteRule ^faculty/index.php$ /faculty/%1? [R=302,L]
前导斜杠不在规则中测试的URI路径中,因此也不能在正则表达式中。
由于查询会自动附加到替换URL(未更改),除非在规则中创建了新查询,否则在使用规则时,尾随问号?
将删除现有查询字符串。