1

我正在尝试为 SEO 目的重写 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 ... 的情况下解决这个问题吗?

4

2 回答 2

0

如果要捕获部分查询字符串,则必须使用RewriteCondwithQUERY_STRING

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

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

于 2013-03-05T01:23:34.177 回答
-1

你试过这个:?

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

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

只是:

RewriteEngine On
RewriteBase /
RewriteRule ^([^/\.]+)\/?$ index.php?p=$1
于 2013-03-04T23:22:40.130 回答