Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php .htaccess删除扩展名不';行不通_Php_Html_.htaccess_Http_Url - Fatal编程技术网

Php .htaccess删除扩展名不';行不通

Php .htaccess删除扩展名不';行不通,php,html,.htaccess,http,url,Php,Html,.htaccess,Http,Url,我有以下问题: 我想从我网站的url中删除.php和.html扩展名 url是localhost/MySiteDir/MySitePage.php,我想获得localhost/MySiteDir/MySitePage 我谨此陈辞: &这个 导游 因此,我在我的MySiteDir上创建了一个.htaccess文件,并将此代码放在该文件中: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.

我有以下问题:

我想从我网站的url中删除.php.html扩展名

url是
localhost/MySiteDir/MySitePage.php
,我想获得
localhost/MySiteDir/MySitePage

我谨此陈辞:

&这个

导游

因此,我在我的
MySiteDir
上创建了一个
.htaccess
文件,并将此代码放在该文件中:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
但它不起作用

我已更改etc/apache2/sites enabled/000-default.conf文件添加

<Directory /var/www/html>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
  </Directory>

当我尝试访问我的网站时,我收到一个500错误。

替换.htaccess文件中的以下代码

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]

首先,您需要确保已安装并启用重写模块()

启用重写模块后,确保apache配置允许htaccess文件()

然后,您将需要两条重写规则,一条用于PHP,另一条用于html:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

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

尝试访问
localhost/MySiteDir/MySitePage
时会发生什么情况?你有404还是“不工作”意味着别的?访问
localhost/MySiteDir/MySitePage.php仍然有效吗?
?您想强制重定向到不带扩展名的url,还是仅仅能够访问不带扩展名的页面?我得到404,然后,如果我尝试localhost/MySiteDir/MySitePage.php,它就有效了!这个问题是由权限引起的吗?我想从我的web应用程序的所有URL中删除.php和.html。在第一种情况下,“允许访问不带扩展名的页面”和“将用户重定向到不带扩展名的页面”是有区别的,如果用户转到
example.com/page
example.com/page.php
页面将显示相同的内容,对于另一种情况,如果用户转到
example.com/page.php
他将被重定向到
example.com/page
我用你的代码更改了.htaccess文件,但它不起作用。可能是因为MySiteDir目录的许可?如果我没有收到apache2ctl-Mi加载的模块列表,你不应该将命令的输出放在注释中,看看重写模块是否显示在模块列表中。如果不是,那么首先安装并启用它。我已经安装并收到“重写模块(共享)”,但它不起作用。是否遵循samedoes apache config allow htaccess规则?对于基于debian的操作系统,您应该在位于
/etc/apache2/sites的vhost配置文件中启用
AllowOverride All
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]

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