Php 带有尾随斜杠的URL在本地工作,但在服务器中不使用.htaccess

Php 带有尾随斜杠的URL在本地工作,但在服务器中不使用.htaccess,php,regex,.htaccess,mod-rewrite,Php,Regex,.htaccess,Mod Rewrite,这是我在.htaccess中的重写规则 ErrorDocument 404 "http://example.com Options +FollowSymLinks RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)/$ $1.php 我需要像http://example.com/careers/而不是http://exampl

这是我在.htaccess中的重写规则

ErrorDocument 404 "http://example.com
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)/$ $1.php
我需要像
http://example.com/careers/
而不是
http://example.com/careers.php
还有
http://example.com/careers/designer
而不是
http://example.com/apply.php?jobs=designer
这在我的本地服务器上运行良好,但在live server上运行不正常。在服务器中,这导致未找到
页面
页面


请给我一个解决方案

这应该完全按照您在问题中描述的内容重写,只是您曾经将
careers.php
,曾经将
apply.php
命名为脚本名,这听起来很奇怪……:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^careers/(.+)$ /careers.php?jobs=$1 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^careers/?$ /careers.php [L]
更一般的实现可能是这种变体,但您的问题在细节上是模糊的,因此在没有实际定义明确目标的情况下,要小心太多的灵活性:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/(.+)$ /$1.php?jobs=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^/]+)/?$ /$1.php [L]
一般性说明:


这些是
.htaccess
样式文件的版本。您必须稍微更改语法,并在模式中包含正常的前导斜杠(
/
),以便在正常主机配置中使用这些行。如果您有权访问该配置,您应该始终希望它使用
.htaccess
样式文件。这些文件是出了名的容易出错的,令人惊讶的是很难调试,而且会让服务器无缘无故地慢下来。只有在无法访问真正的服务器配置时,才应该使用它们

上述内容当然不会重写
http://example.com/careers/designer
如前所述。如果它在本地工作,而不是在服务器上工作,则表示您的服务器上未正确启用mod_rewrite。请与主机联系以启用mod_重写扩展。