我已创建.htaccess
这样的文件,在这里我正在搜索DB
字符串,如果uri包含DB
字符串,则将完整uri
写入变量url
和重定向,到目前为止我试过这个..我不太了解mod_rewrite和htaccess。
Options +FollowSymlinks
RewriteEngine on
# If URI contains string DB then encode http_host and request uri and
# send to http://host.domain.org/site2/index.php with new variable url=encodedstring
RewriteCond %{REQUEST_URI} /DB/
RewriteRule ^ http://host.domain.org/site2/index.php?url=%{HTTP_HOST}%{REQUEST_URI} [NE]
假设我的网址是
http://host.domain.org/site2/DB/process.php?name=x&y=10
我想将url变量设为此
$ echo 'http://host.domain.org/site2/DB/process.php?name=x&y=10' | base64
aHR0cDovL2hvc3QuZG9tYWluLm9yZy9zaXRlMi9EQi9wcm9jZXNzLnBocD9uYW1lPXgmeT0xMAo=
我想网址应该是这样的
http://host.domain.org/site2/index.php?url=aHR0cDovL2hvc3QuZG9tYWluLm9yZy9zaXRlMi9EQi9wcm9jZXNzLnBocD9uYW1lPXgmeT0xMAo=
我不知道这是否可能.htaccess,有人帮助我
我甚至试图在最后
中将所有斜线替换为这样的slash.sh
#!/usr/bin/env bash
sed -u 's/\//-/g'
.htaccess文件
RewriteCond %{REQUEST_URI} /DB/
RewriteMap slash prg:/var/www/virtual/slash.sh
http://host.domain.org/site2/index.php?url="${slash:%{HTTP_HOST}}${slash:%{REQUEST_URI}}" [L]
假设我的网址是
http://host.domain.org/site2/DB/process.php?name=x&y=10
我想网址应该是这样的
http://host.domain.org/site2/index.php?url="http:--host.domain.org-site2-DB-process.php?name=x&y=10"
我收到错误500内部服务器错误
所以最后base64和slash替换都没有为我工作..我的运气不好
感谢。
答案 0 :(得分:1)
这些规则很棘手,但由于你的要求是这样的,我在这里为你提供答案。
请在DocumentRoot/.htaccess
:
RewriteEngine On
RewriteRule ^site2/DB/process\.php$ /site2/index.php/http://%{HTTP_HOST}%{REQUEST_URI} [NC,NE,L]
RewriteCond %{REQUEST_URI} ^(/site2/index.php)/([^/]*)/([^/]*/.*)$
RewriteRule ^ %1/%2-%3 [L,NE]
RewriteCond %{REQUEST_URI} ^(/site2/index.php)/([^/]*)/([^/]*)$
RewriteRule ^ %1?url=%2-%3 [L,NE,QSA,R=302]
这将重定向这样的URI:/site2/DB/process.php?name=x&y=10
:/site2/index.php?url=http:--www.localhost-site2-DB-process.php&name=x&y=10
因此,在-
查询参数中将所有连字符替换为url
。