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


Redirect all URL calls to a particular php file

任何

http请求(例如到pdf)都应该重定向到验证.php所以如果你调用一个URL(例如 http:...../whatever/whatever/1.pdf ),htaccess 应该执行验证.php而是。

我在网络和stackoveflow上看了很多例子,还没有运气。由于大多数人都可以正常工作,因此我想我的服务器一定有问题。

如何解决此问题?

谢谢

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

  • .htaccess - 如何将所有网址重定向到网址.php索引除外.php
  • htaccess 将所有请求重定向到索引.php脚本
  • 如何将所有请求重定向到文件,图像除外阿帕奇?
  • 使用 .htaccess 将所有请求重定向到索引.php

等等。

将这段代码放在DOCUMENT_ROOT/.htaccess文件中:

RewriteEngine On
RewriteRule '.pdf$ /validate.php [L,NC]

将其添加到 .htaccess 文件中,在 IfModule mod_rewrite.c> 部分中<</p>

RewriteEngine On
RewriteRule ^ validate.php [L]

问题是您将 Apache .htaccess重定向和授权与所需的应用程序级行为混为一谈。 至少这就是我在这里假设的,基于您希望每个.pdf请求在访问.pdf之前通过名为validate.php的脚本的事实。

当我说你把事情搞混了,像这样强制验证的逻辑应该在你的validate.php中,或者在PHP应用程序的更大框架内。该脚本应验证用户,然后在设置 Cookie 或会话变量或您可能拥有的任何验证方案后,下载.pdf文件。

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

仅此而已:

# Turn On RewriteEngine
RewriteEngine On
# Set RewriteBase 
RewriteBase /
# Redirect any http request to validate.php
RewriteRule . /validate.php [NC,L]
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ validate.php [L]

这个呢?