0

我使用此代码处理奇怪的行为

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

Howewer 我不认为问题出在这段代码中。重定向工作良好,但例如,如果我使用这个地址mysite.com/something,它会重定向到www.mysite.com/_/something

Joomla htaccess:

RewriteEngine On
RewriteBase /

RewriteRule sitemap\.xml http://www.mojerc.cz/index.php?option=com_xmap&sitemap=1&view=xml [R]

## přesměrování na chybovou stránku 404
ErrorDocument 404 /obchod/poradce/404.html

########## Začátek - Joomla! jaderná SEF část.
#
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
#
########## Konec - Joomla! jaderná SEF část.

########## Begin - Rewrite rules to block out some common exploits
## If you experience problems on your site block out the operations listed below
## This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to set a mosConfig value through the URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Block out any script trying to base64_encode crap to send via URL
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
# Block out any script that includes a <script> tag in URL
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Send all blocked request to homepage with 403 Forbidden error!
RewriteRule ^(.*)$ index.php [F,L]
#
########## End - Rewrite rules to block out some common exploits

大家有遇到过这种奇怪的事情吗?

感谢帮助。

4

1 回答 1

1

您还需要.htaccess在包含此目录的目录中查找任何文件。根据手册

在 .htaccess 文件中找到的配置指令应用于找到 .htaccess 文件的目录及其所有子目录。然而,重要的是还要记住在更高的目录中可能有 .htaccess 文件。指令按照它们被发现的顺序应用。因此,特定目录中的 .htaccess 文件可能会覆盖在目录树中较高位置的 .htaccess 文件中找到的指令。反过来,那些可能已经覆盖了更高的指令,或者在主服务器配置文件本身中。

另请注意,服务器配置文件中的任何指令也将被处理。如果您无权访问服务器配置文件(您在共享主机上,或者您在为您管理这些东西的公司托管),那么您需要联系主机以确定 RewriteRules 是否存在于该文件中文件。

另外请记住,PHP 和其他动态语言也可以执行header()类似于 Apache 的命令并导致页面重定向(但它们必须位于 PHP 文件之一中)。

您可以使用浏览器中的插件(例如 Firefox 的Live HTTP Headers)在加载页面时查看标头,以了解重定向发生的位置。(但请确保您没有同时运行很多选项卡。)

更新 我发生了其他事情。如果您之前有一条规则是包含 的 301 重定向,_/那么如果您已经删除了该规则,它可能会缓存在您的浏览器中。在您发布的这段代码中,我没有看到任何会导致您遇到的行为的规则。由于您正在运行 Joomla,它可能位于 Joomla 配置中(可能是安装的默认目录)。

于 2013-08-11T17:45:47.687 回答