我是新手,了解.htaccess是如何运作的,而我正在努力让它按照我想要的方式工作。
这是我当前的.htaccess文件:
RewriteOptions inherit
#ErrorDocument 404 https://tsrvtc.com/_pages/404page.html
#ErrorDocument 500 https://tsrvtc.com/_pages/500page.html
#ErrorDocument 403 https://tsrvtc.com/_pages/403page.html
<IfModule mod_rewrite.c>
RewriteBase /
RewriteEngine on
RedirectMatch 301 ^/?$ https://www.tsrvtc.com/index
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+_pages/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^_pages/)^(.*)$ /_pages/$1 [L,NC]
#
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+vtc_manager/([^\s]+) [NC]
RewriteRule ^ %1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (?!^vtc_manager/)^(.*)$ /vtc_manager/$1 [L,NC]
RewriteCond %{HTTP_HOST} ^tsrvtc\.com$ [NC]
RewriteRule ^(.*)$ http://www.tsrvtc.com/$1 [R=301,L]
</IfModule>
AuthName "public"
AuthUserFile "/home/tsrvtcco/.htpasswds/public_html/passwd"
它目前隐藏了URL中的_pages目录,但是当我尝试隐藏vtc_managerm目录时,然后转到该目录中的页面,它重定向到我的域名并将index.php放在最后。我收到了这个错误:https://gyazo.com/0cc504188657beafd2042d6332e4bd9b
以下是目录的布局:
public_html
_pages
vtc_manager
非常感谢任何帮助。
答案 0 :(得分:0)
错误配置.htaccess导致的错误。当您尝试深入研究时,apache日志会显示以下错误:
由于可能,请求超出了10个内部重定向的限制 配置错误。使用&#39; LimitInternalRecursion&#39;增加 必要时限制。使用&#39; LogLevel debug&#39;获得回溯。
根据这些条件和规则,您正在进行无限重定向:
1. RewriteCond %{REQUEST_FILENAME} !-f
2. RewriteRule (?!^_pages/)^(.*)$ /_pages/$1 [L,NC]
3. RewriteCond %{REQUEST_FILENAME} !-f
4. RewriteRule (?!^vtc_manager/)^(.*)$ /vtc_manager/$1 [L,NC]
当您发出请求/
并且在根目录中找不到文件时,则第一个条件(1.)符合并且规则符合。请求uri被重写为/_pages/
。处理重写的请求,然后再次将其传递回URL解析引擎。第二次尝试,第一个条件(1.)满足,但规则模式(2.)不符合。但是,第二个条件(3.)符合,规则(4.)符合。然后将请求uri重写为/vtc_manager/_pages/
。然后处理重写请求等等。
您应该完整阅读mod_rewrite module和RewriteRule Flags的文档,以了解您的目标。