我已经组织了我的大.htaccess
文件永久重定向我希望首先执行找到的 mod_rewrite。在这种情况下,我不希望稍后处理 mod_rewrite。
有什么方法可以实现这个目标吗?
例子:
Redirect permanent /products/example.aspx http://www.example.com/products/example/
RewriteCond %{REQUEST_URI} products/([1-9a-zA-Z\s-]+)/
RewriteRule ^products/([0-9a-zA-Z\s-]+)/tutorials(/|\.php)$ /products/$1/help/ [R=permanent,L]
虽然上述内容并不冲突,但我的.htaccess 文件有 60k 大,并且有一些简单的“永久重定向”似乎被忽略了,因为后来的 RewriteRules(例如重定向一个模式)
答案1
在 .htaccess 文件中将“Redirect”语句放在“RewriteRule”之前并不意味着它们会先执行。RewriteRules 会在 Redirect 和 Alias 指令之前执行。它们由不同的模块处理,mod_rewrite 会先被调用。出于这个原因,我有时会使用重写来缩短所有别名和重定向语句。
我建议不要混合重定向和重写,并将重定向转换为重写并将其添加到列表或重写的开头。