htaccess重定向的错误?

时间:2014-10-15 18:50:44

标签: .htaccess url-rewriting rewrite

我是htaccess的初学者,需要帮助检查我的htaccess代码中的错误?
我有3组重定向代码,想知道它们是否相互干扰?
还想知道我是否有冗余重定向代码。

特别是在“停止热链接代码”中,这个RewriteCond是否正确?

RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC]

我的目标是为我的网址保留wwwtrailing slash,并删除我的网址index.html 这是我的.htaccess文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

#Force Trailing Slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [L,R=301] 

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

#Redirect index.html
RewriteCond %{THE_REQUEST} ^.*/index.html [NC]
RewriteRule ^(.*)index.html$ http://www.%{HTTP_HOST}/$1/ [R=301,L]

#Stop Hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F]  


修改:


问题:
- 我的更新后的htaccess是否正确?
- 我是将RewriteBase /置于顶部还是保持原样(一个使用# Begin WordPress规则,另一个RewriteBase /添加# Force Trailing Slash? - 我需要Options +FollowSymLinks,如果是,我在哪里放这个?

请注意我:
- 从WordPress规则中删除RewriteEngine OnRewriteBase /并将其保留在顶部
-put WordPress规则以下重定向
已删除#Redirect non-www to www#Redirect index.html

的结束斜杠
RewriteEngine On

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

# Redirect index.html
RewriteCond %{THE_REQUEST} ^.*/index.html [NC]
RewriteRule ^(.*)index.html$ http://www.domain.com/$1 [R=301,L]

# Force Trailing Slash
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [L,R=301] 

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# Stop Hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)domain.com/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F]

1 个答案:

答案 0 :(得分:1)

不,这不正确。在条件的正则表达式部分中,不能有%个变量或反向引用。您可以使用正则表达式反向引用。尝试:

RewriteCond %{HTTP_HOST}:::%{HTTP_REFERER} !^([^:]+):::http://(www\.)\1/.*$ [NC]