在.htaccess中删除扩展名时无法访问子文件夹中的文件

时间:2015-03-07 10:06:03

标签: php .htaccess

我想访问一些位于某些子文件夹中的php文件。我正在使用.htaccess文件,它会删除所有.php扩展名。 这是文件:

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.net/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.net/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

我不得不说我刚从教程中复制了这个.htaccess文件,因为我没有这方面的经验。

快速举例说明:我可以访问www.example.net/folder/myphpfile.php,但在尝试访问www.example.net/folder/anotherfolder/myphpfile.php时收到“找不到文件”错误。

但是当我删除.htaccess文件时它会起作用。

有人可以帮我解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:1)

这样做:

RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/$ /$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} \s/.+?\.php
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC]
RewriteRule ^(.+?)/?$ /$1.php [L]