Php 重写;“漂亮链接”;导致500内部服务器错误

Php 重写;“漂亮链接”;导致500内部服务器错误,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,经过大量研究,我终于了解到mod_rewrite并不会创建“漂亮的链接”,而是将它们重写为服务器处理的“正常”链接 在这里有一些慷慨的帮助,我已经能够做一些基本的URL重写,特别是删除www.和.php文件扩展名,即使用户在page.php中键入。.htaccess代码供参考: RewriteEngine On # omit www. RewriteCond %{HTTP_HOST} ^www\.website\.com [NC] RewriteRule ^(.*)$ http://websi

经过大量研究,我终于了解到mod_rewrite并不会创建“漂亮的链接”,而是将它们重写为服务器处理的“正常”链接

在这里有一些慷慨的帮助,我已经能够做一些基本的URL重写,特别是删除
www.
.php
文件扩展名,即使用户在
page.php
中键入。.htaccess代码供参考:

RewriteEngine On

# omit www.
RewriteCond %{HTTP_HOST} ^www\.website\.com [NC]
RewriteRule ^(.*)$ http://website.com/$1 [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=302,NE,L]

# To internally redirect /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
我正在工作的这个网站有一个新闻部分,链接使用一个查询字符串从侧边栏中的链接传递文章id,如下所示:

我从帖子开始尝试这一行代码:

RewriteRule^blog/([0-9]+)/([A-Za-z0-9-\+]+)/?$/blog/index.php?id=$1&title=$2[NC,L,QSA]

并修改它以匹配我的网站,如下所示:

RewriteRule^news/([0-9]+)$news?id=$1[NC,L,QSA]

然后我将我的新闻部分中的链接代码修改为:


根据问题和评论,我建议您这样做:

ErrorDocument 404 default
ErrorDocument 500 default

Options +FollowSymLinks -MultiViews
RewriteEngine On

# omit www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# rewrite pretty link to fetch news article
RewriteRule ^news/(\d+)/?$ news.php?id=$1 [NC,L,QSA]

# To internally redirect /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ $1.php [L]

我刚刚复制了
error.log
,奇怪的是,它没有显示最近的任何内容(只有上个月27日的一些小php错误)。导致错误的URL是
news
页面本身,
news/1/
例如,已选择的第一篇文章。直接输入
http://example.com/news/1
在浏览器中?是的,先生,我有。(我不知道为什么我不想试一下……谢谢你的提示)我的语法可能不完全正确。“内部服务器错误”页面在底部显示此错误。
此外,在尝试使用ErrorDocument处理请求时遇到了500个内部服务器错误。
因此我假设(d)这是一个500个错误。我仍然收到一个错误,但现在还缺少
,尝试使用ErrorDocument处理请求时遇到500内部服务器错误。
part。我还可以提供哪些信息来更好地提供帮助?是的,我复制了您答案中的确切代码。我已经下载了错误日志,但正在尝试解压缩它。如果不知道
error.log
中的相关错误文本,我们无法解决它。另一方面,我已经对此进行了测试。在我的Apache上进行了htaccess,一切正常。好的,我能够访问日志,下面是它所说的:
mod_rewrite:已达到最大内部重定向数。假设配置错误。如果有必要,可以使用“RewriteOptions MaxRedirects”来增加限制。
这非常有效,@anubhava让我将
添加到开头
标记的正下方,以使我的CSS样式影响其他页面。作品
ErrorDocument 404 default
ErrorDocument 500 default

Options +FollowSymLinks -MultiViews
RewriteEngine On

# omit www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [L,R=301,NE]

# To externally redirect /dir/file.php to /dir/file
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC]
RewriteRule ^ /%1 [R=301,NE,L]

# rewrite pretty link to fetch news article
RewriteRule ^news/(\d+)/?$ news.php?id=$1 [NC,L,QSA]

# To internally redirect /dir/file to /dir/file.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([^.]+?)/?$ $1.php [L]