htaccess将slug重写为seo url


htaccess rewrite slug to seo url

我有一些类似的URL:

www.mydomain/works/show.php?slug=作品的标题

我想让htaccess以这种方式转换为seo URL:

www.mydomain/works/title of the-work

在我的数据库中,我为每个工作条目创建了一个名为slug的字段。第一个URL运行良好。

这就是我的.htaccess当前的样子(它被放在我的根目录中):

RewriteEngine On
RewriteRule /works/(.*)$ /works/show.php?slug=$1

在过去的24小时里,我读过并尝试过很多类似的例子,但都无济于事。我确信我的服务器允许重写,因为我可以重写非www到www的URL。希望有人能帮忙。感谢

使用:

RewriteEngine On
RewriteRule ^works/(.*)$ works/show.php?slug=$1 [L]

您还可以将.htaccess文件放入works文件夹中,代码为:

RewriteEngine On
RewriteRule ^(.*)$ show.php?slug=$1 [L]

最后这是我正在使用的htaccess(在works文件夹中):

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([^/]+)/?$ show.php?slug=$1 [L]

感谢userNOID让我走上正轨。在htaccess和我的php代码之间确实存在重定向循环,通过添加上面两个条件来解决这个问题,告诉服务器如果文件存在,就忽略重定向(在4种情况下为真:/works、/works/web design、/works/graphical design和works/apps)

我还对正则表达式做了一些更改,使URL可以使用和不使用尾部斜杠。