运行没有扩展名的PHP页面

时间:2012-07-24 05:25:44

标签: php apache .htaccess mod-rewrite

我想在没有.php扩展名的apache web服务器上运行我的PHP网页。所以我添加了以下代码:

RewriteEngine on
RewriteBase /
Rewritecond %{REQUEST_URI} !(^/?.*\..*$) [NC]
RewriteRule (.*)$ $1.php [NC]
<。>在.htaccess文件中。这解决了我的问题,但又出现了另一个问题。我无法查看任何目录的内容(即drectory中包含的文件)。请给我一个没有这个问题的备用RewriteRule。

3 个答案:

答案 0 :(得分:3)

如果将.php附加到其末尾,则需要确保请求URI指向现有资源:

RewriteEngine on
RewriteBase /
Rewritecond %{REQUEST_URI} !(^/?.*\..*$) [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule (.*)$ $1.php [NC]

RewriteCond %{REQUEST_FILENAME}.php -f检查“.php”是否附加到请求的URI,它是否与现有文件(-f)匹配。

答案 1 :(得分:3)

您可以使用此代码,它正在我的网站上运行:

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

#resolve .php file for extensionless php urls
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

#redirect external .php requests to extensionless url
#RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^/]+/)*[^.#?\ ]+\.php([#?][^\ ]*)?\ HTTP/
#RewriteRule ^(([^/]+/)*[^.]+)\.php $1 [R=301,L]

答案 2 :(得分:1)

尝试将DirectoryIndex设置在RewriteCond

之上
DirectoryIndex index.php