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


Rewrite URL with .htaccess to hide PHP extension

我有一个问题,我正在为一个特定的应用程序开发Web服务。上周,我将备份从服务器1转移到服务器2,从那一刻起,我的.htaccess就无法再工作了。

我的Web服务的url是:http://apps.holtesdesign.nl/inholland/apiv0/

此url工作正常,可加载错误报告模块:http://apps.holtesdesign.nl/inholland/apiv0/bugreport.php

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

当你打开最后一个url时,你会发现它会导致一个内部服务器错误。你知道怎么可能吗?

我的.htaccess看起来像:

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

服务器运行在CentOS上,我已经检查了mod_rewrite是否正常工作。。。

我希望你们能帮助我!

干杯,

Jelmer

这将修复它:

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

如果它不起作用,请更正您的Wamp服务器的设置:

  1. 左键单击WAMP图标
  2. Apache
  3. Apache模块
  4. 左键单击rewrite_module

这将隐藏尾部斜杠并在root&子目录。

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]

我的工作概念:

# 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文件中的网站根文件夹中使用此代码:示例

offline-wamp''www''YourWebDir

在线-public_html/

重要提示:如果不起作用,请更正Wamp的设置服务器:1)左键单击WAMP图标2)Apache 3)Apache模块4)左键单击重写模块

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

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