经过几个小时搞乱.htaccess后,我已经到达了将任何请求发送到单个PHP脚本的结论:
在.htaccess中留下最小的功能。
经过一些测试似乎很可行,从我的观点来看更为可取。这么多,我想知道这种方法有什么不对或可能出错?
redirector.php会期望一个包含实际请求的查询字符串。 将所有内容发送到那里的.htaccess代码是什么?
答案 0 :(得分:1)
您可以使用此代码将所有请求重定向到一个文件:
RewriteEngine on
RewriteRule ^.*?(\?.*)?$ myfile.php$1
请注意,所有请求(包括样式表,图片......)也将被重定向。当然还有其他可能性(规则),但这是我正在使用的那个,它将保持查询字符串的正确性。如果您不需要,可以使用
RewriteEngine on
RewriteRule ^.*?$ myfile.php
这是一种常见的技术,因为机器人甚至用户只能看到他们请求的URL,而不是内部处理的方式。服务器性能根本不是问题。
因为您将所有 URL重定向到一个php文件,所以不再有404页面,因为它会被.php文件缓存。因此,请确保正确处理无效网址。
答案 1 :(得分:1)
我更喜欢将所有的php文件移到另一个目录中,并在你的htdocs路径中只放置一个php文件,它处理所有请求。其他文件,你想通过没有PHP,你也可以使用这个htaccess放在该文件夹中:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php/$0 [L]
现有文件(JPG,JS或者其他)在没有PHP的情况下仍然可以访问。这是实现它的最灵活方式。
示例:
- /scripts/ # Your PHP Files
- /htdocs/index.php # HTTP reachable Path
- /htdocs/images/test.jpg # reachable without PHP
- /private_files/images/test.jpg # only reachable over a PHP script