2017-03-07 92 views
0

我在运行XAMPP堆栈的我的localhost上有PHP项目。.htaccess在xamp中不工作

我想从所有面向用户的URL中删除.php扩展名。

我尝试使用Apache的mod_rewrite.htaccess文件:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteBase/

    RewriteRule ^locations(/.*)?$ poet.php [L,NC] 
</IfModule> 

但它是 “不工作”。

+1

[Remove .php extension with .htaccess]可能的重复(http://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess) –

+0

@Abhishek我看到这篇文章时,我谷歌但这个步骤没有工作,所以最后我决定问问题 –

+0

RewriteEngine叙述上 重写规则^(+)\。PHP $/$ 1 [R,L] 的RewriteCond%{REQUEST_FILENAME} .PHP -f 重写规则^(。* ?)/?$ /$1.php [NC,END] –

回答

0

把这个代码在.htaccess文件

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

注意:不要忘记更改重写基本路径,如果您的项目文件夹不在根目录下。

+0

如果您的项目文件夹不在根目录下,请不要忘记更改RewriteBase路径。我无法理解这一点。它的第一个htaccess –

+0

这意味着如果你的项目是在htdocs文件夹的根目录下,那么就使用上面的代码,但是如果你的项目不在htdocs的根目录下,那么请指定到你的项目文件夹的路径。假设你的项目在htdocs/projects/demoproject1里面......那么RewriteBase的路径就会像这样RewriteBase/projects/demoproject1/ –

+0

谢谢你。我如何设置404使用此规则 –

0

试试这个代码解决你的问题

 <IfModule mod_rewrite.c> 
      RewriteEngine On 
      RewriteCond %{REQUEST_FILENAME}.php -f 
      RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L] 
    </IfModule> 
+0

它不工作。 –

+0

我还启用AllowOverride All从我的http.conf –

+0

@VivekMishra编辑代码再试一次 –

0
RewriteCond %{REQUEST_FILENAME}.php -f 
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L] 
0

尝试以下项目目录中的规则,

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