0

我正在尝试获取以下路径:/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/

都好!

4

1 回答 1

1

试试这个:

RewriteRule ^faculty/index.php$ /faculty/%1? [R=302,L]

前导斜杠不在规则中测试的 URI 路径中,因此也不能在正则表达式中。

由于除非在规则中创建新查询,否则查询会自动附加到替换 URL(未更改地传递),因此在使用规则时尾随问号?会擦除现有查询字符串。

于 2013-04-16T00:07:50.783 回答