使用标题和ID重写URL动态

时间:2016-10-03 15:01:38

标签: .htaccess mod-rewrite url-rewriting friendly-url

我需要使用title和id动态重写url。我想动态制作网址

http://dev.example.com/beweb/iphone-8.html

而不是

http://dev.example.com/beweb/newsdetails.php?id=8&title=iphone

当我运行上面的网址时,我会根据需要进行动态调整,但会出现错误

" Not Found
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
The requested URL /beweb/iphone-8.html was not found on this server."

我使用了以下代码:

RewriteEngine On
RewriteCond %{THE_REQUEST} /beweb/newsdetails.php\?id=([^&\s]+)&title=([^&\s]+) [NC]  
RewriteRule ^ /beweb/%2-%1\.html? [NC,R,L,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^%2-([^.]+)\.html$ /beweb/newsdetails.php?id=$1&title=$2 [QSA,L,NC]

请帮帮我。

2 个答案:

答案 0 :(得分:0)

规则几乎是正确的。您只是错误配置了最后一个语句,该语句应为:

RewriteRule ^([^-]+)-([^.]+)\.html$ /beweb/newsdetails.php?id=$2&title=$1 [QSA,L,NC]

答案 1 :(得分:0)

使用这些行,您可以检查服务器上不是真实静态文件或目录的路径,如果是negetive,则处理文件名以便为您的用户提供服务:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^beweb/([a-z]+)\-([0-9]+).html$ /beweb/index.php?id=$2&title=$1 [QSA,L,NC]

QSA表示将查询字符串添加到新网址