将所有URL调用重定向到特定的php文件

时间:2013-11-14 16:18:00

标签: php regex .htaccess mod-rewrite

任何http请求(例如pdf)都应该重定向到 validate.php ,所以如果你调用一个URL(例如http:...../whatever/whatever/1.pdf), htaccess 应该执行 validate.php 代替。

我在网络和stackoveflow上经历了很多例子,但没有运气。由于大多数人的工作都很好,我想我的服务器肯定有问题。

我该如何解决这个问题?

由于

注意: htaccess和validate.php文件存储在根目录中。

还有更多。

5 个答案:

答案 0 :(得分:1)

将此代码放入DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On

RewriteRule \.pdf$ /validate.php [L,NC]

答案 1 :(得分:0)

这就是全部:

# Turn On RewriteEngine
RewriteEngine On
# Set RewriteBase 
RewriteBase /
# Redirect any http request to validate.php
RewriteRule . /validate.php [NC,L]

答案 2 :(得分:0)

将此内容添加到.htaccess文件中,< IfModule mod_rewrite.c>节

RewriteEngine On
RewriteRule ^ validate.php [L]

答案 3 :(得分:0)

问题是你正在混淆Apache htaccess重定向&具有所需应用程序级别行为的授权。根据您希望.pdf的每个请求在访问validate.php之前通过名为.pdf的脚本的事实,至少这是我在此假设的。

当我说你正在混淆时,强制进行验证的逻辑应该在你的validate.php或PHP应用程序的更大框架内。该脚本应该在设置cookie或会话变量或您可能具有的任何验证方案之后验证用户 - 下载.pdf文件。

这就是说,这不是一个简单的问题,以你描述的方式回答。

答案 4 :(得分:0)

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ validate.php [L]

这个怎么样?