我有一些类似的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可以使用和不使用尾部斜杠。