2017-09-21 101 views
0

我最近更改了我的主機。舊的服務器有php 5.3,最新的有php 5.6。這種變化在主機努力,使我的網站使用PHP 7Htaccess重定向問題與查詢字符串參數不是

不過,我所遇到的問題與htaccess的重定向兼容的一步。

我htaccess文件看起來像下面

DirectoryIndex index.php 
Options +FollowSymLinks 
RewriteEngine On 

RewriteRule ^company/([0-9]+)/?$ company.php?company_id=$1 [L] 

所以,當我去到頁面URL mydomain.com/admin/company/92

我似乎並沒有得到重定向的URL的要求,即mydomain.com/admin/company.php?company_id=92

這是某些輸出的從印刷$_SERVER

[REDIRECT_SCRIPT_URL] => /admin/company/92/ 
    [SCRIPT_FILENAME] => /htdocs/myproj/admin/company.php 
    [REDIRECT_URL] => /admin/company.php/92/ 
    [REQUEST_METHOD] => GET 
    [QUERY_STRING] => 
    [REQUEST_URI] => /admin/company/92/ 
    [SCRIPT_NAME] => /admin/company.php 
    [STATUS] => 200 
    [ORIG_PATH_INFO] => /92/ 
    [ORIG_PATH_TRANSLATED] => /htdocs/myproj/admin/company.php 
    [PHP_SELF] => /admin/company.php 
    [argv] => Array 
     (
     ) 

    [argc] => 0 
) 

我已經得到了我的本地PHP 5.3和相同的代碼在我的本地工作正常。我該如何解決這個問題?

+0

in'^ company'這個'^'將它粘到字符串的開頭。所以在'公司'之前的任何事情都會使它無法匹配。您可以將其更改爲'RewriteRule/company /([0-9] +)/?$ /company.php?company_id=$1 [L]'例如 –

+0

我試過刪除^但我仍然沒有收到任何QUERY_STRING – NoNice

回答

1

這是選項MultiViews的最有可能的效果默認爲新主機開啓。

你可以關閉它是這樣的:

DirectoryIndex index.php 
Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase /admin/ 

RewriteRule ^company/([0-9]+)/?$ company.php?company_id=$1 [L,NC,QSA] 

選項MultiViews(見http://httpd.apache.org/docs/2.4/content-negotiation.html)所使用的Apache's content negotiation modulemod_rewrite之前運行,使文件的Apache服務器匹配擴展。所以如果/file是URL,那麼Apache將服務於/file.html

+0

嗨Anubhav,我改變如上,但仍然沒有得到任何價值[QUERY_STRING => ....在我的本地與PHP 5.3我仍然可以看到[QUERY_STRING => COMPANY_ID = 92 – NoNice

+1

你是對的。它似乎沒有在目錄級別啓用!謝謝。我將立即致電我的託管公司並啓用它。我認爲最有可能的是這個問題。我多麼不想去想先檢查一下。 – NoNice

+0

我的不好 - htaccess已啓用,但我正在更改一個錯誤的文件。我現在修改了正確的文件,並且我得到了500個內部服務器錯誤(例如,在添加了-mulitviews和[L,NC,QSA]之後),請指教,非常感謝您爲您服務 – NoNice

相關問題