【问题标题】:PHP Using $_GET without a variable defined in URL?PHP 使用 $_GET 而不在 URL 中定义变量?
【发布时间】:2014-12-28 00:04:18
【问题描述】:

如果我有一个名为“dir”的目录和一个名为“index.php”的文件,是否可以处理 URL 中的字符串而无需在 url 中专门定义任何变量?

例如。如果用户输入http://domain.com/dir/hello.world

是否可以处理来自 dir/index.php 的 'hello.world' 而不会被假定为不存在的文件?

我假设这是一个 htaccess 的事情,我知道如何使用 htaccess 将变量隐藏在一个 url 中(就像/index.php?var=something 变成 /var/something)但我不知道我会怎么做所以它变成了/something

【问题讨论】:

    标签: php .htaccess get


    【解决方案1】:

    您正在寻求实现通常被称为“漂亮网址”的东西。您可以通过将所有不是文件或目录的请求强制到 .htaccess 中的 index.php 来做到这一点:

    Options +FollowSymLinks
    RewriteEngine On
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    
    RewriteRule ^.*$ ./index.php
    

    然后你可以从请求 uri 中拉出你的参数:

    $_SERVER['REQUEST_URI'];
    

    【讨论】:

    • 我会接受你的回答,因为它很好。虽然我改变的一件事是使用这些规则:RewriteRule ^(.*)/?$ index.php?var=$1 [L,NC,QSA]RewriteRule ^(.*)$ $1.php [L] 所以一切都传递给 var 变量。虽然当传递多个变量时,您的解决方案会更好。
    猜你喜欢
    • 2012-11-08
    • 2011-07-07
    • 2016-12-07
    • 2022-09-27
    • 2013-05-02
    • 2014-09-08
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多