//对不起语法错误和其他任何错误,英语不是我的母语(不知道我拼写是否合适)。
我用htaccess制作了SEO友好的URL。唯一的问题是,我总是会从网址中获取信息(使用GET),现在使用SEO友好网址我不能这样做。
我之前的网址是:
http://rasolutions.eu/blogitem?id=2
所以在PHP中,它将是$ _GET ['id']并且它将是2.但是现在我已经拥有了SEO友好网址,这就是:
http://rasolutions.eu/blogitem/2/
现在我的PHP脚本无法看到他从哪里获取ID,因此它会将我返回主页。
我用谷歌搜索你需要在htaccess中使用(。*),但我不知道在哪里或如何。 我的htaccess代码是这个atm:
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# WWW to not WWW.
RewriteCond %{HTTP_HOST} ^www\.rasolutions\.eu$
RewriteRule ^/?$ "http\:\/\/rasolutions\.eu\/" [R=301,L]
RewriteRule ^blog/(.*)([0-9]+)/$ blog.php?page=$1 [NC,L]
RewriteRule ^blogitem/(.*)([0-9]+)/$ blogitem.php?id=$1 [NC,L]
答案 0 :(得分:1)
根据您发布的示例语法,最后两个规则应该是正确的,而不是 (.*)
。而且你必须以灵活的方式处理尾部斜杠(/
):
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
# WWW to not WWW.
RewriteCond %{HTTP_HOST} ^www\.rasolutions\.eu$
RewriteRule ^(.*)$ http://rasolutions.eu$1 [R=301,L]
RewriteRule ^blog/([0-9]*)/?$ blog.php?page=$1 [NC,L]
RewriteRule ^blogitem/([0-9]*)/?$ blogitem.php?id=$1 [NC,L]
一般来说,如果您有权访问它,那么使用RewriteLogging是一个很好的想法。它可以帮助您准确了解每个子步骤中重写引擎内部的内容,而不必猜测会发生什么。