【发布时间】:2014-03-15 05:49:49
【问题描述】:
当且仅当有人请求一个没有任何扩展名(如 .php 和 .html 等)的 URL 并且该目录也不存在时,我才需要一个带有 get 参数的 PHP 文件。
例如:
example.com/xyz
现在服务器上没有xyz 目录然后.htaccess 需要一个带有get 参数的php 文件-myfile.php?url=xyz
【问题讨论】:
标签: php .htaccess routing require
当且仅当有人请求一个没有任何扩展名(如 .php 和 .html 等)的 URL 并且该目录也不存在时,我才需要一个带有 get 参数的 PHP 文件。
例如:
example.com/xyz
现在服务器上没有xyz 目录然后.htaccess 需要一个带有get 参数的php 文件-myfile.php?url=xyz
【问题讨论】:
标签: php .htaccess routing require
但如果我请求 xyz?id=1,它仍然只发送 xyz。有没有办法 无论是什么字符串,都发送整个字符串
正如您提到的,如果您请求example.com/xyz 或example.com/xyz?id=1,您想要获取所有参数。然后用这个。注意QSA 标志。这将附加请求的查询字符串。我想这就是你正在寻找的答案。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /myfile.php?url=$1 [QSA,L]
所以如果你请求这个example.com/xyz?id=1&h=2
您的 PHP print_r($_GET); 输出将是这个。
Array ( [url] => xyz [id] => 1 [h] => 2 )
【讨论】:
从这个sn-p开始
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ myfile.php?url=$1 [PT,L]
ErrorDocument 404 /myfile.php
</IfModule>
【讨论】:
xyz?id=1 它仍然只发送 xyz。不管什么是字符串,有什么方法可以发送整个字符串?