我正在尝试为项目创建漂亮的/ 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
。
答案 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]
现在工作正常。