从URL

2014-09-29 31 views
2

井中移出.PHP,我知道这是应该做的通过.htaccess进行 我的.htaccess是在我的网站的根目录,这里从URL

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

而且国防部重写在我的服务器启用了它的内容。 我有一个表单,其中有./getReadings.php。 但是,当我将其更改为./getReadings它表示tehre不是服务器上的此类文件。我的错误是什么?

+2

尝试添加'选项-MultiViews'之前'RewriteEngine'指令 – 2014-09-29 09:52:14

+0

完美,被逼入扩展名相当于!发表一个答案 – 2014-09-29 09:53:56

回答

3

尝试增加Options -MultiViewsRewriteEngine指令

Options -MultiViews 
RewriteEngine On 

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

注:MultiViews是关于Apache内容negociation(其现在的问题是,因为filename将自动翻译为filename.php现有的文件)。这就是为什么你必须禁用它。


编辑:现在,您可以通过2周不同的网址(带或不带php扩展名)访问相同的内容。为了避免重复的内容(这是坏的搜索引擎),你可以重定向扩展使用此代码

Options -MultiViews 
RewriteEngine On 

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

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ /$1.php [L,QSA] 
0
RewriteEngine on 
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC] 
    RewriteRule^%1 [R,L] 

    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php 
+1

请只避免发布代码。您还应该添加关于代码的解释。 – arco444 2014-09-29 10:23:27

0
Options -MultiViews 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php