子目录不重定向到索引
Subdirectory not redirecting to index
我在 .htaccess 文件中使用了以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
使用它后,它终于允许我删除文件扩展名,我的目标,
但是子目录不再重定向到它们各自的索引文件,
而不是仅显示 'Forbidden' 和“404”消息。
然后我尝试在 .htaccess 中进行手动重定向:
Redirect 301 /subfolder http://www.domain.com/subfolder/index
这让我陷入了重定向循环,即使在源代码中删除它们之后,它们仍然存在。我还应该指出,我几乎没有使用 .htaccess 的经验。
试试这个重定向。它陷入了一个循环,因为 301 是一个永久重定向,它被保存在浏览器中。
RedirectMatch 301 /subfolder(.*) //
欢迎来到使用永久重定向进行测试的美妙世界:犯了一个错误,它就会继续犯错误,直到您清除浏览器缓存。
首先,去掉重定向,清除浏览器缓存。其次,假设您的规则适用于每个请求,而不仅仅是您想要更改的请求。
您确定的问题是对符合您规则的目录的请求,然后被重写。对 http://domain.com/sub/
的请求将被重写为 http://domain.com/sub/.php
。现在那不是任何存在的东西。唯一能让你免于无限递归的是检查 url.
中的点
那么,我们该如何解决呢?好吧,我们检查请求的文件是否不是起始目录。现在我们不重写 url 如果它是一个目录,DirectoryIndex
会处理剩下的事情。为防止无限递归,您可以测试 url 是否已以 .php
结尾,但在这种情况下您已经处理好了。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ .php [NC,L]
我在 .htaccess 文件中使用了以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ .php [NC,L]
使用它后,它终于允许我删除文件扩展名,我的目标,
但是子目录不再重定向到它们各自的索引文件,
而不是仅显示 'Forbidden' 和“404”消息。
然后我尝试在 .htaccess 中进行手动重定向:
Redirect 301 /subfolder http://www.domain.com/subfolder/index
这让我陷入了重定向循环,即使在源代码中删除它们之后,它们仍然存在。我还应该指出,我几乎没有使用 .htaccess 的经验。
试试这个重定向。它陷入了一个循环,因为 301 是一个永久重定向,它被保存在浏览器中。
RedirectMatch 301 /subfolder(.*) //
欢迎来到使用永久重定向进行测试的美妙世界:犯了一个错误,它就会继续犯错误,直到您清除浏览器缓存。
首先,去掉重定向,清除浏览器缓存。其次,假设您的规则适用于每个请求,而不仅仅是您想要更改的请求。
您确定的问题是对符合您规则的目录的请求,然后被重写。对 http://domain.com/sub/
的请求将被重写为 http://domain.com/sub/.php
。现在那不是任何存在的东西。唯一能让你免于无限递归的是检查 url.
那么,我们该如何解决呢?好吧,我们检查请求的文件是否不是起始目录。现在我们不重写 url 如果它是一个目录,DirectoryIndex
会处理剩下的事情。为防止无限递归,您可以测试 url 是否已以 .php
结尾,但在这种情况下您已经处理好了。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ .php [NC,L]