使用.htaccess改写和重定向以创建漂亮的URL时遇到麻烦

时间:2019-03-30 14:24:40

标签: apache mod-rewrite

我正在尝试为项目创建漂亮的/ SEO友好的URL,但是我无法正确配置.htaccess文件。

我学习了如何从%domain%/profile.php重写并重定向到%domain%/profile,以便现有的书签可以使用,并且搜索引擎不会有重复的页面。此代码可以正常工作:

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule .* - [L]

RewriteCond %{REQUEST_URI}  ^/profile\.php$
RewriteRule .* /profile [R=301,L]
RewriteRule ^profile$ /profile.php [L]

但是我不知道如何使用参数%domain%/profile.php?id=1%domain%/profile/1来实现。 这是我要使用的代码:

RewriteCond %{QUERY_STRING}  ^id=([0-9]*)$ [NC]
RewriteRule ^profile\.php?id=([0-9]*)$ /profile/%1 [R=301,L]
RewriteRule ^profile/([0-9]*)$ /profile.php?id=%1 [L]

服务器返回%domain%/profile/1而不是profile?id=1

1 个答案:

答案 0 :(得分:2)

谢谢Nikos M.

此外,htaccess Tester可以提供很多帮助。

由于我们已经在%{QUERY_STRING}中检查了?id = [0-9],仅检查pattern中的profile.php就足够了。另外,我在替代链接中添加了问号,因此我得到了/profile/1而不是/profile/1?id=1

RewriteRule ^profile\.php?id=([0-9]*)$ /profile/%1 [R=301,L]

RewriteRule ^profile\.php$ /profile/%1? [R=301,L]

现在工作正常。