解决了:
不幸的是,该解决方案是不令人满意的。 今天上午,试图@ Wige的建议的时候,我才发现,我的惊喜,该预期值INFACT发送到页面作为一个GET
查询。 显然,1&1(谁知道我一直在改变他们的环境中,这最后的几个星期),其中没有固定神奇我的问题,现在我所有的先前unworking 代码最初工作预计在幕后的东西。
新的信息 :生产服务器的Apache的版本是1.3.34
VS 2.2.21
在我的本地 。
我无法弄清楚,为什么我重写规则是不是在生产中正常工作。
RewriteRule ^page/pretty-url/(.*)$ page.php?query=$1 [L]
在我的本地测试环境( localhost/mysite/page/pretty-url/{...}
它工作正常,但mysite.com/page/pretty-url/{...}
它不能正常工作。 它加载page.php
如预期,但显然?query=$1
件被忽略( $_GET
为空)
我想这个问题是主题相关的服务器配置。 我在1&1共享的主机,没有httpd.conf的访问帐户。
那是什么RewriteRule
做(或应该做的):
我希望网址喜欢
*
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]