2017-09-21 83 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

相关问题