Php .htaccess删除扩展名不';行不通
我有以下问题: 我想从我网站的url中删除.php和.html扩展名 url是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.
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]