繁体   English   中英

如何使用.htaccess将公共PHP文件制作到目录?

[英]How Do I Make A Common PHP File To A Directory With .htaccess?

我正在使用通用的PHP文件处理URL的主页以外的内容。 就像PHP $ _GET请求一样,区别在于没有参数。 就像文件一样。

Ex- http://localhost/ -通常应由index.php文件管理。 http://localhost/ANYTHINGHERE应该将其扔到一个自定义PHP文件中,然后再决定该怎么做。

实际上,我正在一个项目中,我需要向用户隐藏URL信息。 因此,用于管理ANYTHINGHERE URL的文件实际上将访问目录localhost / i /。

谢谢,等待最好的答复!

为此,您需要两个部分:

首先:.htaccess,它将所有访问重定向到传递到php脚本的域名(此处为index.php):

RewriteEngine On
RewriteRule (.*) index.php/$1

其次:在index.php中,您将获得用户输入的URI为$_SERVER['PATH_INFO'] (以/开头)

但是,这会使所有请求都通过index.php脚本(取决于index.php的位置,您还可以得到无穷的递归,因此请继续阅读;))。 通常,人们不希望这样做(例如,图像应由Web服务器直接提供)。 因此,通常使用一种方式(即,现有目录,文件和链接由Web服务器直接提供服务):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^(.*)$ - [NC,L]
RewriteRule (.*) index.php/$1

如果这应该在子目录中进行,则需要在RewriteEngine On之后直接添加RewriteBase /subdirectory

如果您不想使用$_SERVER['PATH_INFO'] ,也可以使用RewriteRule (.*) index.php?url=$1 [QSA] ,那么您将获得用户输入的URI为$_GET['url']

这要求将mod_rewrite加载到服务器上。

参见http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM