解决了:
不幸的是,解决scheme并不令人满意。 今天早上,在试用@ Wige的build议时,我惊奇地发现,Expected的值事实上是作为GET查询发送到页面的。 显然,1&1(我知道谁最近几周已经在改变他们的环境),做了一些幕后工作,我的问题已经得到了神奇的解决,现在我所有的以前的工作代码都按照原先的预期工作。
新的信息 :生产服务器的Apache版本是我的本地主机上的1.3.34和2.2.21 。
我无法弄清楚为什么我的RewriteRule在生产中不能正常工作。
RewriteRule ^page/pretty-url/(.*)$ page.PHP?query=$1 [L]
将Apache转换为Nginx
使用.htaccess通过index.PHP重新路由所有的请求,除了一些特定的请求
WAMP,Laravel 5:路由不工作 – NotFoundHttpException
在.htaccess中需要一个特定的URL RewriteRule
.htaccess – 如何在某些页面上设置SSL(脚本需要修改)
在我的本地testing环境( localhost/mysite/page/pretty-url/{...} )中工作正常,但在mysite.com/page/pretty-url/{...}上无法正常工作。 它像预期的那样加载page.PHP ,但显然这个?query=$1片断被忽略( $_GET是空的)
我想这个问题与服务器configuration有关。 我在1&1共享主机帐户没有httpd.conf访问。
RewriteRule做了什么(或者应该做什么):
我想要urls喜欢
* example.com/page/pretty-url/{{info_for_dynamic_content}}
被改写
* /page.PHP?query={{info_for_dynamic_content}}
所以我可以访问info_for_dynamic_content
在PHP内作为$_GET['query']
完整的.htaccess文件供参考:
AddHandler x-mapp-PHP6 .PHP DirectoryIndex index.PHP ErrorDocument 404 /index.PHP Options +FollowSymLinks # per @Jacques Chester's suggestion Options -MultiViews RewriteEngine on RewriteBase / # the rule in question RewriteRule ^page/pretty-url/(.*)$ page.PHP?query=$1 [L] RewriteCond %{REQUEST_FILENAME}.PHP -f RewriteRule ^(.*)$ $1.PHP RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.PHP !-f RewriteRule (.*) /index.PHP [L]
在共享主机上的Symfony的htaccess
Angular html5模式不能在Apache中工作
用mod_rewriteredirect和重写
强制非www到htaccess中的www
最有可能的是,你的主机将变量存储在其他地方。 我会添加一个调用PHPinfo(); 到你的脚本,并通过在那里的环境变量,看看你是否可以找到应该得到的值。
似乎连接到1&1的托管环境。
看到这个问题 ,特别是这个答案 。
基本上看来,1&1启用“MultiViews”。 通过增加
Options -MultiViews
您停用您的网站的设置,并根据各种报告,这解决了这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。