htaccess获取seo url的参数

时间:2014-04-20 11:40:44

标签: php .htaccess url mod-rewrite

//对不起语法错误和其他任何错误,英语不是我的母语(不知道我拼写是否合适)。

我用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]

1 个答案:

答案 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是一个很好的想法。它可以帮助您准确了解每个子步骤中重写引擎内部的内容,而不必猜测会发生什么。