【问题标题】:htaccess not working for subfoldershtaccess 不适用于子文件夹
【发布时间】:2012-09-24 23:08:47
【问题描述】:

我想问一下为什么我在根文件夹中的 .htaccess 不能正常工作。

.htaccess

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*pages/.*\.php [NC] 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*debates/.*\.php [NC]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

/(主文件夹)中的链接带有工作 .php 隐藏,但在 /pages/ 和 /debates/ 等子文件夹中,系统无法识别重写规则。我想将 .php 隐藏在两个目录中,就像它们隐藏在主文件夹中一样。

我找到了解决方案!

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+)$ $1.php [L,QSA]

【问题讨论】:

  • 我认为你需要使用!-f检查文件是否存在。

标签: .htaccess mod-rewrite hyperlink rewrite subdirectory


【解决方案1】:

看起来这些规则都是错误的,他们不会做任何事情:

RewriteCond %{THE_REQUEST} ^GET\s/*pages/.*\.php [NC] 
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

RewriteCond %{THE_REQUEST} ^GET\s/*debates/.*\.php [NC]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

你可以把你的 htaccess 改成这个:

RewriteEngine On 
RewriteRule ^pages/([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /pages/$1\.php$2 [L]
RewriteRule ^debates/([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /debates/$1\.php$2 [L]
RewriteRule ^([a-zA-Z0-9]+)(/[a-zA-Z0-9/]+)?$ /$1\.php$2 [L]

【讨论】:

  • 在此服务器上找不到请求的 URL /9e6c561c1f.php。此外,在尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误。文件存在!当我在 url 栏中将扩展名从空白更改为 +.php 时,它会打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2014-09-28
  • 1970-01-01
相关资源
最近更新 更多