0

由于一些 Drupal 问题,我有一个奇怪的重写问题。我不知道如何修复 Drupal 问题,所以这将是一个临时修复:

路径/the%20campanile/([0-9]+)/([0-9]+)/(最好带有斜杠可选)应该是/campanile/([0-9]+)/([0-9]+)/.

我试过了:

RewriteBase /
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/

除了 404 失败(可能重写错误)。我也尝试过使用通配符 ( *),但无济于事。我浏览了 StackOverflow 和其他一些论坛上的大约 16 个帖子。

整个.htaccess看起来是这样的:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
RewriteRule ^campy/([0-9]+)/([0-9]+)/$ campanile/$1/$2/
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com
RewriteRule ^(.*)$ /category/blogs/danger-zone [L]

我究竟做错了什么?

4

1 回答 1

1

不知道为什么你是正则表达式是^campy/([0-9]+)/([0-9]+)/$当你试图匹配像/the%20campanile/([0-9]+)/([0-9]+)/. 除了分组,campy永远不会匹配%20campanile

您需要记住,URI 在通过 mod_rewrite 处理之前已被解码,因此您不想匹配%20,而只想匹配空格:

RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L]

您还希望这些规则您的index.php路由规则之前,因为路由规则会在它到达您的其他规则之前重写它:

RewriteEngine on
RewriteBase /
RewriteRule ^/?the\ campanile/([0-9]+)/([0-9]+)/?$ campanile/$1/$2/ [L]
RewriteCond %{HTTP_HOST} ^danger-\.palyvoice\.com
RewriteRule ^(.*)$ /category/blogs/danger-zone [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
于 2012-10-04T05:29:03.193 回答