如何隐藏.php以免在地址栏中显示?

时间:2014-02-24 20:35:06

标签: php .htaccess

我有一个包含html页面的网站和一个.php页面。我想找到一种方法来隐藏地址栏中的.php扩展名。

我希望该页面显示为example.com/submit,而不是example.com/submit.php

另外,使用下面的.htaccess文件,我似乎无法获得从.html版本的页面重定向到.php页面的Google网站链接。

以下是我的.htaccess文件中的内容:

ErrorDocument 404 /page-not-found.html

ErrorDocument 403 /access-denied.html

SetEnv TZ America/Chicago

IndexIgnore *

Options +MultiViews

RewriteCond %{REQUEST_FILENAME} (.*)\.html [NC]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %1\.php -f [NC]
RewriteRule ^(.*).html$ $1.php [NC]

我希望有人能帮我解决这个问题。

感谢。

看来这个答案来自另一个特定于godaddy的线程。甚至不是接受的答案,而是另外的评论。

Using .htaccess to make all .html pages to run as .php files?

Options +ExecCGI
AddType application/x-httpd-php .php .html
AddHandler x-httpd-php5 .php .html

2 个答案:

答案 0 :(得分:0)

您可以使用以下规则:

ErrorDocument 404 /page-not-found.html
ErrorDocument 403 /access-denied.html
SetEnv TZ America/Chicago

IndexIgnore *
Options -MultiViews

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/+(?:index)?(.*?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,L,NE]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f [NC]
RewriteRule ^(.+?)(?:.html)?$ /$1.php [L,NC]

答案 1 :(得分:0)

front controller pattern可能会更好地帮助你。

这可以帮助你拥有/ foo / bar,所有这些都将由index.php处理。

如果你可以使用.html而不是.php,用这样的东西编辑apache配置可能会有所帮助:

AddType application/x-httpd-php .php .html .htm .your_ext