.htaccess 不会将直接 link 重定向到 .php 文件
.htaccess doesn't redirect direct link to .php files
这是我当前的 .htaccess 文件:
DirectoryIndex requestHandler.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ requestHandler.php?/[=12=] [L,QSA]
我想将所有请求重定向到 "requestHandler.php"。它现在可以工作了,但也可以使用直接 link 访问站点,我不希望这样。
例如:
它现在可以与 ".../api/register" 一起使用,但您也可以访问它但是转到 ".../register.php" 并且那应该是不可能的。应该只能通过“.../api/register”去register.php。
我想我以前用过它,但当我继续编辑时,我似乎把它搞砸了。
requestHandler.php 应该正常工作,当我输入“.../register.php”时,它根本不会重定向到 requestHandler,但是如果我输入“.../registe.php" 或 ".../register.ph" 它被重定向到那里。
有什么解决办法吗?
您发布的规则仅检查 file/directory 是否存在,如果不存在,则重定向至 requestHandler.php。所以很自然地,如果在 URL 中输入现有文件,它不会重定向。
如果您希望所有“.php”文件也被重定向,您将需要更具体的重写规则。可能是这样的:
DirectoryIndex requestHandler.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ requestHandler.php?/[=10=] [L,QSA]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^(.*)$ requestHandler.php?/[=10=] [L,QSA]
您或许可以将其合并为一个规则块,但至少这样可读性很强。仅当请求的文件不是文件或目录时才检查第二个规则块。
这是我当前的 .htaccess 文件:
DirectoryIndex requestHandler.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ requestHandler.php?/[=12=] [L,QSA]
我想将所有请求重定向到 "requestHandler.php"。它现在可以工作了,但也可以使用直接 link 访问站点,我不希望这样。
例如: 它现在可以与 ".../api/register" 一起使用,但您也可以访问它但是转到 ".../register.php" 并且那应该是不可能的。应该只能通过“.../api/register”去register.php。
我想我以前用过它,但当我继续编辑时,我似乎把它搞砸了。
requestHandler.php 应该正常工作,当我输入“.../register.php”时,它根本不会重定向到 requestHandler,但是如果我输入“.../registe.php" 或 ".../register.ph" 它被重定向到那里。
有什么解决办法吗?
您发布的规则仅检查 file/directory 是否存在,如果不存在,则重定向至 requestHandler.php。所以很自然地,如果在 URL 中输入现有文件,它不会重定向。
如果您希望所有“.php”文件也被重定向,您将需要更具体的重写规则。可能是这样的:
DirectoryIndex requestHandler.php
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ requestHandler.php?/[=10=] [L,QSA]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule ^(.*)$ requestHandler.php?/[=10=] [L,QSA]
您或许可以将其合并为一个规则块,但至少这样可读性很强。仅当请求的文件不是文件或目录时才检查第二个规则块。