用 title 和 id 重写 URL 动态

Rewrite URL dynamic with title and id

我需要用标题和 ID 动态重写 url。我想使 URL 动态

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

而不是

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

当我 运行 以上 URL 时,它是我需要的动态生成的..但是出现错误

" 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=&title= [QSA,L,NC]

请帮帮我。

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

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

使用这些行,您可以检查服务器上不是真正的静态文件或目录的路径,然后如果有问题,则处理文件名以服务于您的用户:

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

QSA表示将查询字符串添加到新的URL