[英]URL Rewriting returns 500 internal server error
我正在尝试将其转换为:
site/read.php?id=6
至
site/read/6
我已经尝试了几种在SO上找到的解决方案,最后一种是(输出: site/read/id/6
): RewriteRule ^(.*?\\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
RewriteRule ^(.*?\\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
当我尝试第二个链接时,它将挂起,并且apache崩溃(LOL)。
不确定.htaccess文件的其余部分是否有问题,因此下面是完整的代码:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
RewriteRule ^(.*?\.php)/([^/]*)/([^/]*)(/.+)? $1$4?$2=$3 [NC,N,QSA]
我可以实现(使用第1-4行),没有显示任何php扩展名,因此地址栏当前显示为site/read?id=6
您能指出我哪里出问题了吗?
您可以将此代码放在htaccess中(必须在根文件夹中)
Options -MultiViews
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/read\.php\?id=([0-9]+)\s [NC]
RewriteRule . /read/%1? [R=301,L]
RewriteRule ^read/([0-9]+)$ /read.php?id=$1 [L]
我会在PHP中执行dthis,很难调试Apache得到的东西,可能是进入了不确定的循环,您是否在apache日志文件中找到了任何东西? 但是省去了麻烦,用PHP做到了,如果您使用的是Framework,那么很容易引入一个PHP进行检查,并在URL中检测到.php时重定向到新页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.