Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess htaccess重定向中的错误?_.htaccess_Url Rewriting_Rewrite - Fatal编程技术网

.htaccess htaccess重定向中的错误?

.htaccess htaccess重定向中的错误?,.htaccess,url-rewriting,rewrite,.htaccess,Url Rewriting,Rewrite,我是htaccess的初学者,需要帮助检查以下htaccess代码中的错误? 我有3组重定向代码,不知道它们是否相互干扰? 还想知道我是否有多余的重定向代码 特别是在“停止热链接代码”中,此重写是否正确 RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC] 我的目标是为我的URL保留www和尾部斜杠,并删除我的URL的index.html 这是我的.htaccess文件 # BEGIN WordPress <I

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

特别是在“停止热链接代码”中,此重写是否正确

RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC]
我的目标是为我的URL保留
www
尾部斜杠
,并删除我的URL的
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]  

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

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

谢谢你,乔恩。我想我不应该调整htaccess代码。最初这是我在google中找到的代码----RewriteCond%{HTTP_REFERER}^http://(www\.)domain.com/*$[NC]----关于停止热链接代码,此重写条件正确吗?-----------另外,您是否注意到我上面的其他htaccess代码有任何错误?这3组重定向是否相互干扰?@leko如果你知道你的主机名是什么,那么
RewriteCond%{HTTP_REFERER}^http://(www\.)domain.com/*$[NC]
可以。其他重定向的问题是,它们都在末尾附加了一个
/
。@leko不,你只会被重定向到带有大量斜杠的URL,你只想在匹配缺少斜杠的请求时添加斜杠(强制trailign斜杠规则),您希望所有重定向都在wordpress规则之前。@leko看起来不错,但您仍然需要测试它。如果没有
FollowSymLinks
,Mod_rewrite根本无法工作,因此如果您没有收到错误,它已经打开,因此您无需执行此操作anything@leko是的,那很好,只要它们是一样的,就没有什么区别
RewriteCond %{HTTP_HOST}:::%{HTTP_REFERER} !^([^:]+):::http://(www\.)\1/.*$ [NC]