解決:
遺憾的是,該解決方案是不令人滿意的。今天早上,在試用@ Wige的建議時,我驚奇地發現,期望值事實上發送到頁面,作爲GET
查詢。顯然,我認識的人過去幾週一直在改變他們的環境,在幕後做了一些奇蹟般地解決了我的問題的場景,現在我以前的非工作代碼是按照最初的預期工作。我htaccess的重寫規則適用於本地主機/ mysite的,但不是在mysite.com在1&1共享主機
新信息:本阿帕奇版的生產服務器是在我的本地主機1.3.34
VS 2.2.21
。
我很難弄清楚爲什麼我的RewriteRule在生產中不能正常工作。
RewriteRule ^page/pretty-url/(.*)$ page.php?query=$1 [L]
在我的本地測試環境(localhost/mysite/page/pretty-url/{...}
),它工作正常,但mysite.com/page/pretty-url/{...}
它不能正常工作。它如預期加載page.php
,但顯然?query=$1
一塊被忽略($_GET
爲空)
我想象這個問題在某種程度上與服務器配置有關。我正在使用不帶httpd.conf訪問的共享主機帳戶。
是RewriteRule
能做什麼(或應該做):
我要像
*
example.com/page/pretty-url/{{info_for_dynamic_content}}
的URL改寫爲
*
/page.php?query={{info_for_dynamic_content}}
所以我可以在php
爲$_GET['query']
全面進入info_for_dynamic_content
。參考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]
什麼版本的Apache在你的localhost vs 1&1上運行? –
如果它在你的本地主機上運行,根據你的回答,這個問題不能是mod改寫的條件或規則,因爲**它們工作。看來你已經解決了所有問題。那麼,什麼是問題,找出你的規則爲什麼不能在你的網站工作?如果是這樣,我想你應該專門提出這個問題,明確它與你的規則無關,因爲它們工作正常。我認爲這是'網站管理員'的問題。這只是我的看法,但我希望以任何方式有用。 – PDR
你說得很好。在添加賞金之前,我幾乎將此重寫爲「可能會阻止在另一臺服務器上工作的RewriteRule。」 - 或者更類似這樣的東西。我不認爲我有代表遷移問題 - 但我認爲你也可能是對的。 –