Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess 还有一个重写规则的问题:向所有URI添加一个参数而不更改它们_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess 还有一个重写规则的问题:向所有URI添加一个参数而不更改它们

.htaccess 还有一个重写规则的问题:向所有URI添加一个参数而不更改它们,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我想重写 www.mydomain.com/www/whatever.php 到 www.mydomain.com/www/whatever.php?hl=EN 尽管.php不是固定的,但它表示www目录中的任何php页面 我的htaccess目前看起来是这样的: RewriteEngine on RewriteCond %{REQUEST_URI} !hl= RewriteRule ^(.+)$ $1?hl=EN [QSA,R=301,L] 但出于某些原因,它会将每个页面的实际硬盘路

我想重写

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

  • www.mydomain.com/www/whatever.php?hl=EN
尽管.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
我一定是做错了什么,知道吗?

你可以试试这个:

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

假设所有字符串都是固定的,除了
任何内容

对于静默映射,将
[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]

我想你的条件应该检查%{QUERY\u STRING}而不是REQUEST\u URI。我不知道你所说的硬盘URL是什么意思。您能指定原始URL和它重定向到的URL吗?我添加了详细信息,并更正了
{QUERY\u STRING}
的问题。RewriteRule中的正则表达式匹配将只匹配请求URI部分(例如/my/little/pony/index.php)。你工作的环境怎么样?本地主机?使用URL中的文件系统路径直接访问文件?我也是这么想的…重写库是如何定义的?它工作正常,谢谢!!还有一件事,url被重定向了,但我看不到url中添加的参数,即使删除了R=301。你知道我怎么能把hl参数当作GET参数放在url中吗?另外,rewritebase是可选的,没有必要。我不明白h1-EN是如何将hl=EN添加到url的,有任何相关文档吗?首先,让我了解发生了什么。替换URL是这样的
http://www.mydomain.com/www/whatever.php?hl=EN
如我的答案所示,还是遗漏了什么?@Sebas没错。脚本存在,因此条件
RewriteCond%{REQUEST\u FILENAME}-f
不应该在那里。很高兴我能帮上忙。