使用.htaccess重写URL以隐藏PHP扩展

时间:2013-08-11 22:22:24

标签: php .htaccess url mod-rewrite rewrite

我有一个问题,我正在为特定应用开发网络服务。 上周我将我的备份从server1转移到了server2,因为那时我的.htaccess将不再起作用。

我的网络服务的网址是: http://apps.holtesdesign.nl/inholland/apiv0/

此网址正常,加载bugreport模块: http://apps.holtesdesign.nl/inholland/apiv0/bugreport.php

但网址应该是: http://apps.holtesdesign.nl/inholland/apiv0/bugreport

当您打开最后一个网址时,您会看到它会导致内部服务器错误。 你知道怎么可能吗?

我的.htaccess看起来像:

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

服务器在CentOS上运行,我已经检查过mod_rewrite是否正常运行......

我希望你能帮助我们!

干杯,

Jelmer

4 个答案:

答案 0 :(得分:5)

这将解决它:

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

如果无效,请更正您的Wamp服务器的设置:

  1. 左键单击WAMP图标
  2. Apache
  3. Apache Modules
  4. 左键单击rewrite_module。

答案 1 :(得分:1)

这将隐藏尾部斜杠并隐藏root文件中的.php。子目录。

RewriteEngine On

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]

答案 2 :(得分:0)

试试这个..它有效! :)

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

答案 3 :(得分:0)

我的工作理念:

# Options is required by Many HostSevice
Options +MultiViews

RewriteEngine on

# For .php & .html URL's:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteRule ^([^\.]+)$ $1.html [NC,L]

在.htaccess文件:示例

中使用您网站的根文件夹中的此代码

离线 - wamp \ www \ YourWebDir

在线 - public_html /

  

重要说明:如果它无法正确显示您的Wamp的设置   服务器:1)左键单击WAMP图标2)Apache 3)Apache模块4)左   单击rewrite_module