查询串改写使用的.htaccess(Query string rewriting using .ht

2019-08-17 07:22发布

我试图重写的搜索引擎优化目的的网址。

旧的URL是:

http://www.domain.net/index.php?p=beer

新的URL应该是:

http://www.domain.net/beer

我在.htaccess代码是:

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

即使研究小时后,我不知道这是为什么不工作:(

下面是完整的.htaccess:

RewriteEngine on 
RewriteCond %{HTTP_USER_AGENT} Teoma
RewriteRule ^.* - [F]
rewritecond %{HTTP_HOST} !^www\.domain\.net$ [NC]
rewriterule ^(.*)$ http://www\.domain\.net/$1 [R=301,L]

RewriteCond %{QUERY_STRING} ^p=uppic$
RewriteRule ^index\.php$ /? [L,R=301]

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

# Pwd service

AuthType Basic
AuthName "Service"
AuthUserFile /xxxx/www/xxxxxx/xxxxx/xxxxxx/.htpasswd


<Files admin.php>
Require user xxxxxxx
</Files>

Options -Indexes

提前致谢!


我对这段代码最后一个问题是:

RewriteRule ^([^/\.]+)/?$ index.php?p=$1

使工作:

http://www.domain.net/beer

和啤酒是指的那个页面:

http://www.domain.net/index.php?p=beer

这是伟大的! 但是,如果我把一个/后面的啤酒,如:

http://www.domain.net/beer/

我beer.php文件运行在另一条路径,所以没有CSS,图片,JS等是包括在内。 任何想法如何解决这个问题不改变的HTML http://www.domain.net/style.css ...?

Answer 1:

如果你想捕捉的查询字符串的一部分,你必须使用RewriteCondQUERY_STRING

RewriteEngine On
RewriteCond %{QUERY_STRING} p=(.+)
RewriteRule ^/?index.php$ /%1? [R,L]

这会将客户端重定向到新的URL http://www.domain.net/beer



Answer 2:

你有没有试过这种:?

^([^/\.]+)\/?$

否则,我会尝试.htacces没有其他的东西。

只是:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/\.]+)\/?$ index.php?p=$1


文章来源: Query string rewriting using .htaccess