【发布时间】:2013-02-03 03:42:01
【问题描述】:
我正在使用 .htaccess mod_rewite 指令并想要完成 2 件不同的事情:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?unit=/$1 [PT,L]
上面采用指定的 URL 并让我通过我的 index.php 引导页面引导它。
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
以上内容使我的文件可以在没有 .php 扩展名的情况下显示。
使用它,我可以使用 url /module/function/setting 指定一个文件,它包括引导页面上的路径以加载 [root]/module/function/setting.php。
我需要将这两个动作组合成一个语句,有人可以帮忙吗?
【问题讨论】:
-
这似乎不需要。请求
example.com/page.php不正确。为什么不干脆完全忽略“.php”,然后在脚本加载后附加它呢?$file = getenv('REQUEST_URI') . '.php';? (注意请确保您不仅仅包含基于原始 URL 的内容!) -
好的,我明白了,是的,这是一个选项。出于兴趣,您为什么选择将 REQUEST_URL 设置为环境变量?当然,Env 最适合开发/生产状态等静态方面?如何清理原始 URL,我可以使用 PHP 过滤器吗?
-
getenv()函数允许您安全地访问$_SERVER变量,因为 Web 服务器会自动设置它们。$url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : NULL;与$url = getenv('REQUEST_URI'); -
但是
$_ENV变量是否比使用$_GET或简单地获取index.php 上的URL 更合适?我认为$_ENV在概念上是为为系统设置设计的静态变量而保留的。
标签: apache .htaccess php httpd.conf