我认为这对于精通.htaccess文件语法的人来说是一个相当简单的解决方案的问题,但不幸的是我不是。
我已经弄清楚如何制作它,以便当有人访问domain.com/something/5
时,内部就会像访问domain.com/something/?page=5
一样。然而,实际上,如果用户选择,用户仍然可以访问“丑陋”的URL,并且显然,拥有两个具有完全相同内容的不同URL的SEO是不好的。所以,我想强迫用户使用干净的URL。
这是我的.htaccess文件:
RewriteEngine On
RewriteRule ^\?page=([0-9]+)$ index.php?page=$1 [R=301,NC,L]
RewriteRule ^([0-9]+)/?$ index.php?page=$1 [NC,L]
当然,底部与问题并不真正相关,因为内部将干净的URL重定向到脏的URL的规则,但我认为无论如何我最好包括它。
我已经过了十几次在正则表达式中搜索错误,以及希望删除像插入符号和美元符号之类的东西,但是当我通过?page=5
访问它时仍然没有任何反应
关于我如何做到这一点的任何想法?
答案 0 :(得分:1)
您无法访问RewriteRule中的查询字符串。如果您不希望他们仍然访问“丑陋”的URL,那么您需要检查REQUEST并将它们重定向到SEF URL。
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\?page=([^\&\ ]+)
RewriteRule ^ /%1? [R=301,L]
RewriteRule ^([0-9]+)/?$ index.php?page=$1 [NC,L]
如果答案可以解决您的问题,请告诉我。