- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
问题:
我正在使用 Kohana/PHP 为其他公司开发托管网站。我让客户在他们的 DNS 服务器中放入 CNAME 条目以指向我的域。例如。 http://invites.somecompany.com指向 http://www.mydomain.com .
因此,我的 apache 服务器上的 %{HTTP_HOST} 条目是“invites.somecompany.com”
我想重写http://invites.somecompany.com/invite至 http://www.mydomain.com/invites/invite
尽管 Apache 似乎正在这样做,但 $_SERVER['REQUEST_URI'] 仍然是“/”。问题是 Kohana 使用 $_SERVER['REQUEST_URI'] 将请求路由到适当的 Controller 代码。在这种情况下,它会将其路由到 base 索引 Controller ,而不是“invites” Controller 。
事实:
我正在使用的 Apache mod_rewrite 指令(在 .htaccess 文件中):-
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteCond %{REQUEST_URI} !.*invites.*
RewriteRule ^(.*)$ invites/$1
# For Kohana
RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]
在 index.php 中,我这样做:
var_dump($_SERVER);
我得到:
'REQUEST_URI' => string '/',
'QUERY_STRING' => string 'kohana_uri=invites/index.php&kohana_uri=invites/invite'
'REDIRECT_QUERY_STRING' => string 'kohana_uri=invites/invite'
所以 mod_rewrite 不会修改 REQUEST_URI?
需要:
'REQUEST_URI' => 'invites/invite',
'QUERY_STRING' => string 'kohana_uri=invites/invite',
我如何获得它?
======================编辑
重写日志条目:-
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '^(?:application|modules|system)\b.*' to uri 'invite'
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '\.git' to uri 'invite'
strip per-dir prefix: /Users/project/invite -> invite
applying pattern '^(.*)$' to uri 'invite'
rewrite invite -> invites/invite
add per-dir prefix: invites/invite -> /Users/project/invites/invite
strip per-dir prefix: /Users/project/invites/invite -> invites/invite
applying pattern '.*' to uri 'invites/invite'
rewrite invites/invite -> index.php?kohana_uri=invites/invite
add per-dir prefix: index.php -> /Users/project/index.php
strip document_root prefix: /Users/project/index.php -> /index.php
internal redirect with /index.php [INTERNAL REDIRECT]
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '^(?:application|modules|system)\b.*' to uri 'index.php'
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '\.git' to uri 'index.php'
strip per-dir prefix: /Users/project/index.php -> index.php
applying pattern '^(.*)$' to uri 'index.php'
rewrite index.php -> invites/index.php
add per-dir prefix: invites/index.php -> /Users/project/invites/index.php
strip per-dir prefix: /Users/project/invites/index.php -> invites/index.php
applying pattern '.*' to uri 'invites/index.php'
rewrite invites/index.php -> index.php?kohana_uri=invites/index.php
add per-dir prefix: index.php -> /Users/project/index.php
initial URL equal rewritten URL: /Users/project/index.php [IGNORING REWRITE]
最佳答案
1.) 如果手动调用此链接是否有效? http://www.mydomain.com/invites/invite
2.) RewriteCond %{HTTP_HOST} !^www.mydomain.com$
需要像 RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$
3.) RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]
是一个无限循环,因为 index.php 适合正则表达式 .*
,也是。
4.) 您需要 R 标志将用户重定向到邀请/RewriteRule ^(.*)$ invites/$1 [R=301]
。 %{REQUEST_URI}
与浏览器地址栏中的 uri 相同。
5.) 如果您不想重定向访问者,您可以“破解”kohana 系统并设置 $_SERVER['REQUEST_URI'] = $_GET['myURI'];
在index.php 的第一行,如果这是让它运行的唯一选项。 myURI
可以根据需要通过 mod_rewrite 填充。
关于php - REQUEST_URI 不会被使用 APACHE RewriteRule 覆盖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864810/
这个问题在这里已经有了答案: What does the PHP error message "Notice: Use of undefined constant" mean? (8 个答案) 关闭
我有以下 php 脚本来读取 URL 中的请求: $id = '/' != ($_SERVER['REQUEST_URI']) ? str_replace('/?id=' ,"", $_SER
虽然我有一些 .htaccess 文件设置,但我没有使用虚拟主机或任何花哨的东西。以下是我在 httpd.conf 中的重写规则: RewriteEngine On RewriteCond %{REQ
我已经在 2-3 个 apache 服务器上进行了测试,如果我没有出卖我的话,%{REQUEST_URI}总是以 / 开头,即使请求的 URL 是 http://domain.com (没有和结束斜线
我有一小段示例代码可以提取页面的 URI。此页面在 Linux/Apache 安装上运行: $url = ""; if (!isset($_SERVER['REQUEST_URI'])) { ec
当我在 req.php 中运行以下代码时: 要求: curl "http://localhost/req.php/postcode/14482/city/./country/de/" 我收到这样的回
我们从$_SERVER['REQUEST_URI']获得信息,而不是从$_GET或$_POST获得信息。 我想定义$request_uri将/example更改为/module/controller/
我想使用诸如http://localhost/universe/networks/o2/o2_logo.gif之类的URL并执行以下操作: 如果以/ universe /开头 从中剥离/ univer
简单问一下,$_SERVER['request_uri'] 不包含解码后的网址,而是原始网址。如果我访问 http://localhost/asd/%20/ 它包含 asd/%20/。将其解析为 as
如何确定何时使用 $request_uri 与 $uri? 根据 NGINX 文档,$request_uri 是原始请求(例如,/foo/bar.php?arg=baz 包含参数且无法修改) 但 $u
快速提问,$_SERVER['request_uri'] 不包含解码后的 url,而是包含原始 url。如果我访问 http://localhost/asd/%20/,它包含 asd/%20/。将其解
我正在 codeigniter 中建立一个网站。我在 .htaccess 文件中有一系列重写条件和规则。第一组规则根据 uri 的第一段打开或关闭 SSL。 然后它再次循环,如果找到匹配项,则适本地重
我希望使用数据库中的条目来验证 REQUEST_URI 中的目录。我目前的 url 结构如下所示 https://domain.com/accounts/customers/details 我的数据库
我对这些函数有疑问:$_SERVER["REQUEST_URI"]。有人可以告诉我使用它是否安全,就像我使用它一样(这些形式我用于论坛中的新主题)? " method="post"> 谢谢 最佳答案
从我读到的内容来看,$_SERVER['REQUEST_URI'] 似乎不会总是正确地返回查询字符串,但是有没有人明白成功率是多少?它在大多数情况下对普通客户有效吗? 什么(如果有的话)会导致 REQ
在我的主 Web 服务器上,$_SERVER 变量 REQUEST_URI 总是包含类似“/filename.php”的内容,但是在我的开发服务器(PHP 版本 5.3.5-1ubuntu7.3,Ap
打字有什么区别吗: 或 或 ? 它们都有效...我使用第一个。也许一个比另一个快? 最佳答案 没有引号,PHP 将 REQUEST_URI 解释为常量,但如果没有这样的常量并将其解释为字符串,则
我在为我的 PHP 网站创建路由器时遇到了这样一个方法: public function getURI() { if (!empty($_SERVER["REQUEST_URI"])) {
事情就是这样,我正在构建需要根据请求 URI 调度 http 请求的调度程序类,所以我只对域后面的 URI 部分感兴趣。 现在,当我在像这样的 URI 上的实时服务器上工作时: www.domain.
我正在将 REQUEST_URI 解析为一个数组。 现在我有以下代码: private function load_url_vars() { if (preg_match('/^.+\?(.+
我是一名优秀的程序员,十分优秀!