【问题标题】:Query string rewriting using .htaccess使用 .htaccess 重写查询字符串
【发布时间】:2013-02-19 05:10:11
【问题描述】:

我正在尝试重写一个用于 SEO 的 URL。

旧网址是:

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

新的网址应该是:

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 ... 的情况下解决这个问题吗?

【问题讨论】:

    标签: .htaccess url-rewriting query-string


    【解决方案1】:

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

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

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

    【讨论】:

    【解决方案2】:

    你试过这个吗:?

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

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

    只是:

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

    【讨论】:

    • 这与所要求的相反。
    猜你喜欢
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 2012-11-15
    • 1970-01-01
    • 2016-02-13
    • 2020-06-04
    相关资源
    最近更新 更多