重新编写的URL给出了404错误

时间:2016-09-21 08:00:39

标签: .htaccess mod-rewrite url-rewriting

我正在使用模式重写来制作seo友好的网址。请参阅以下代码

Options +FollowSymLinks
RewriteEngine on

RewriteRule discover/([0-9]+)$ discover.php?page=$1 [NC,L]
RewriteRule ^([^\.]+)$ $1.php [NC,L]

代码在我的本地主机中工作,但在托管服务器中它不起作用。

如果我添加了文件扩展名,它可以在服务器中运行,但没有扩展程序,它不起作用。

Ex:以下作品

RewriteRule discover-([0-9]+)\.html$ /discover.php?page=$1 [L]

有关如何使第一个代码工作的任何指示?感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

在请求中添加MultiViews之前,请关闭.php选项并检查是否存在.php文件:

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteRule discover/([0-9]+)/?$ discover.php?page=$1 [NC,L,QSA]

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

答案 1 :(得分:1)

试试这个,

Options +FollowSymLinks -MultiViews
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^discover/([0-9]+)$ discover.php?page=$1 [NC,L]

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