Apache mod_rewrite:可以改进这些简单的RewriteRule吗?和建议!

时间:2010-07-13 20:39:26

标签: apache .htaccess mod-rewrite

我最后开始了解Apache mod_rewrite。这真是太棒了!

Plz看看以下内容:


1)永久重定向http://www.domain.com/folder_name/(有或没有最终斜杠,有或没有www)到http://www.domain.com/some/path/some_page.html

RewriteRule ^folder_name[/]*$ "http\:\/\/domain\.com\/some\/path\/some_page.html" [R=301,L]

2)永久性地将对www.domain.com...的所有请求重定向到相同的路径和文件请求但在域中没有www

RewriteCond %{HTTP_HOST} !^domain.com$
RewriteRule ^(.*)$ "http\:\/\/domain\.com\/$1" [R=301,L]

他们都按预期工作并完成工作,我只是好奇,如果在mod_rewrite中比我更专业的人可以给我一些建议:“它可能会更好以这种方式......“,”如果......“等等可能会出现问题。

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 使用?量词而不是*,您无需转义替换网址:

    RewriteRule ^folder_name/?$ http://example.com/some/path/some_page.html [R=301,L]
    
  2. 您可能需要考虑缺少 Host 标头字段的HTTP 1.0请求。另一个有用的扩展是将HTTPS考虑在内:

    RewriteCond %{HTTP_HOST} !^(|example\.com)$
    RewriteCond %{HTTPS} ^on(s)|
    RewriteRule ^ http%1://example.com%{REQUEST_URI} [R=301,L]