2017-10-29 32 views
0

的.htaccess

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^cars/(.*).html$ /control.php [P,L] 
RewriteRule ^trucks/(.*).html$ /control.php [P,L] 

/control.php

<pre> 
<?php 
    echo "Path Requested: " . $_SERVER['REQUEST_URI'] . "\n\n"; 
    print_r($_SERVER); 
?> 
</pre> 

测试URL(用“example.com”替换实际主机名)

http://example.com/trucks/valugatah.html 

结果

Path Requested: /control.php 

Array 
(
    [CONTEXT_DOCUMENT_ROOT] => /home/fubelboobin/public_html 
    [CONTEXT_PREFIX] => 
    [DOCUMENT_ROOT] => /home/fubelboobin/public_html 
    [GATEWAY_INTERFACE] => CGI/1.1 
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 
    [HTTP_ACCEPT_ENCODING] => gzip, deflate 
    [HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.8,gl;q=0.6 
    [HTTP_CACHE_CONTROL] => max-age=0 
    [HTTP_CONNECTION] => close 
    [HTTP_HOST] => fubelboobin.com 
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1 
    [HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36 
    [HTTP_X_FORWARDED_FOR] => 23.241.124.74 
    [HTTP_X_FORWARDED_HOST] => fubelboobin.com 
    [HTTP_X_FORWARDED_SERVER] => fubelboobin.com 
    [PATH] => /bin:/usr/bin 
    [QUERY_STRING] => 
    [REDIRECT_STATUS] => 200 
    [REMOTE_ADDR] => 166.62.119.108 
    [REMOTE_PORT] => 47854 
    [REQUEST_METHOD] => GET 
    [REQUEST_SCHEME] => http 
    [REQUEST_URI] => /control.php 
    [SCRIPT_FILENAME] => /home/fubelboobin/public_html/control.php 
    [SCRIPT_NAME] => /control.php 
    [SERVER_ADDR] => 166.62.119.108 
    [SERVER_ADMIN] => [email protected] 
    [SERVER_NAME] => fubelboobin.com 
    [SERVER_PORT] => 80 
    [SERVER_PROTOCOL] => HTTP/1.1 
    [SERVER_SIGNATURE] => 
    [SERVER_SOFTWARE] => Apache 
    [UNIQUE_ID] => [email protected] 
    [PHP_SELF] => /control.php 
    [REQUEST_TIME_FLOAT] => 1509237121.06 
    [REQUEST_TIME] => 1509237121 
    [argv] => Array 
     (
     ) 

    [argc] => 0 
) 

注意URL浏览器的地址栏里面看到的(如预期和期望的):

http://example.com/trucks/valugatah.html 

那么,有什么问题呢?

我期待的$_SERVER['REQUEST_URI']是相同正如我在地址栏,这是/trucks/valugatah.html原始URL但是,你可以从我的贴结果$_SERVER['REQUEST_URI']瞧瞧正在恢复/control.php

这应该不是问题,因为根据the docs,如果$_SERVER['REQUEST_URI']被覆盖,那么我应该可以访问一个名为$_SERVER['REDIRECT_REQUEST_URI']的新var(自动创建),它保留原始$_SERVER['REQUEST_URI'],但正如您从我的中看到的那样结果,$_SERVER['REDIRECT_REQUEST_URI']永远不会被创建。

我读了所有我能找到在过去的2天,我已经没有什么...

+0

可能是一些做的'P'标志...你使用这里反正是什么,这不是一个标准的一部分“漂亮网址“设置... – CBroe

+0

@CBroe - 感谢您的想法!这工作。 – Pseudo

回答

0

从.htaccess文件中删除“P”标志的解决了这个问题。这里的工作代码:

的.htaccess

Options +FollowSymlinks 
RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^cars/(.*).html$ /control.php [L] 
RewriteRule ^trucks/(.*).html$ /control.php [L]