【问题标题】:.htaccess - Require a PHP file if directory don't exist [closed].htaccess - 如果目录不存在,则需要 PHP 文件 [关闭]
【发布时间】: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


【解决方案1】:

但如果我请求 xyz?id=1,它仍然只发送 xyz。有没有办法 无论是什么字符串,都发送整个字符串

正如您提到的,如果您请求example.com/xyzexample.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 )

【讨论】:

  • 非常感谢.. 一个词改变了整个程序:)
【解决方案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。不管什么是字符串,有什么方法可以发送整个字符串?
  • 您必须编写(或查找)url 解析器函数。您只能使用 .htaccess 获取参数...这里的 xyz 不是参数,此文件名或查询字符串的一部分... google this "php url parser"
  • 好的,谢谢 :) :D 感谢您的回答。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
相关资源
最近更新 更多