【问题标题】:Run PHP pages without an extension运行没有扩展的 PHP 页面
【发布时间】:2012-07-24 05:25:43
【问题描述】:

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

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

.htaccess 文件中。这解决了我的问题,但出现了另一个问题。我无法查看任何目录的内容(即目录中包含的文件)。请给我一个备用RewriteRule 没有这个问题。

【问题讨论】:

  • 感谢编辑。我的英语很差...大声笑

标签: php apache .htaccess mod-rewrite


【解决方案1】:

如果您将 .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)。

【讨论】:

  • 感谢您的快速响应和解决我的问题,
【解决方案2】:

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

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]

【讨论】:

    【解决方案3】:

    尝试在RewriteCond 上方设置DirectoryIndex

    DirectoryIndex index.php
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      • 1970-01-01
      相关资源
      最近更新 更多