另一个重写问题:在不更改所有URI的情况下向所有URI添加参数

时间:2013-02-19 23:08:29

标签: .htaccess mod-rewrite

我想重写

  • www.mydomain.com/www/whatever.php

  • www.mydomain.com/www/whatever.php?hl=EN

whatever.php没有修复,它代表www目录中的任何php页面。

我的htaccess目前看起来像这样:

RewriteEngine on
RewriteCond %{REQUEST_URI} !hl=
RewriteRule ^(.+)$ $1?hl=EN [QSA,R=301,L]

但出于某种原因,它将每个页面的真实硬盘路径添加到www.mydomain.com,例如:

  • 127.0.0.1:8080/index.php

变为

  • 127.0.0.1:8080/D:/mypath/index.php?hl=EN

我必须在这里做错事,任何想法?

1 个答案:

答案 0 :(得分:1)

你可以试试这个:

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI}  ^/(www/[^.]+\.php)/? [NC]
RewriteRule .*         %1?h1-EN             [R=301,L]

永久重定向

带有或不带斜线的

http://www.mydomain.com/www/whatever.php

要:

http://www.mydomain.com/www/whatever.php?hl=EN

假设所有字符串都是固定的,whatever除外。

对于静态映射,请将[R=301,L]替换为[L]


从SO编辑:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} !hl=
RewriteCond %{REQUEST_URI}  ^/(www/[^.]+\.php)/? [NC]
RewriteRule .*         %1?hl=EN             [R=301,L]

做了这个伎俩,谢谢