这些重写规则是否正确归档以下内容?

时间:2012-03-08 07:05:39

标签: php apache .htaccess apache2

我想

  1. 使用WWW将所有用户重定向到域
  2. 我正在使用codeigniter,所以想从url的
  3. 中删除index.php
  4. 如果有人请求domain / index.php
  5. ,则阻止访问index.php并重定向到域名
  6. 想要301重定向所有页面
  7. 所以这些是我提出的线路.htaccess

    RewriteEngine on
    
    RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} (.*)$
    RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?$1 [L]
    
    RewriteCond %{THE_REQUEST} ^.*/index\.php
    RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1 [R=301,L] 
    

    这些规则是否正确做我想做的事情?有更好的方法吗?

    此致

1 个答案:

答案 0 :(得分:0)

我做了一些更改并删除了一些冗余代码。这是你修改过的.htaccess:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

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

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s(.*)/index\.php [NC]
RewriteRule ^ /%1 [R=301,L]

另外请确保您的css,js,图像文件始终使用绝对路径而不是相对路径,即js,css的路径,图像应以http:///开头。