如何禁用不需要的请求?(MySQL、.htaccess、PHP)
首先,我是PHP和.htaccess的初学者。这是我的困境 我构建了动态页面,并使用htaccess重写URL。有3种类型的页面。。。示例: 州:example.com/massachusetts-colleges.html 城市:example.com/massachusetts-colleges/boston-ma-colleges.html 学院:example.com/massachusetts-colleges/boston-ma-colleges/harvard.html 问题是请求的页面(可能来自旧的链接结构)不应该存在,例如: example.com/boston-ma-colleges.html 州URL存储在数据库的locations表中(stateSlug=massachusetts colleges)。城市URL也存储在数据库的locations表中,相应的州slug也存储在该城市中(citySlug=波士顿ma学院,stateSlug=马萨诸塞学院)。学院存储在不同的表中,并使用ID与城市相对应 如何使用.htaccess阻止任何“其他”URL被访问(页面显示模板,没有数据),并显示404页面(或重定向到主页) 这就是我的.htaccess文件现在的样子:如何禁用不需要的请求?(MySQL、.htaccess、PHP),php,mysql,.htaccess,mod-rewrite,Php,Mysql,.htaccess,Mod Rewrite,首先,我是PHP和.htaccess的初学者。这是我的困境 我构建了动态页面,并使用htaccess重写URL。有3种类型的页面。。。示例: 州:example.com/massachusetts-colleges.html 城市:example.com/massachusetts-colleges/boston-ma-colleges.html 学院:example.com/massachusetts-colleges/boston-ma-colleges/harvard.html 问题是请求
RewriteEngine on
RewriteRule ^([^/\.]+)\.html?$ php/statePage.php?stateSlug=$1 [L]
RewriteRule ^([^/\.]+)-colleges/([^/\.]+)\.html?$ php/cityPage.php?citySlug=$2&stateSlug=$1 [L]
RewriteRule ^([^/\.]+)-colleges/([^/\.]+)/([^/\.]+)\.html?$ php/collegePage.php?collegeSlug=$3&citySlug=$2&stateSlug=$1 [L]
同样,我对htaccess和php语言有些陌生。在这件事上,如果有任何帮助,我将不胜感激
谢谢大家! 假设您的所有内容都与上述URL之一匹配,您可以通过在末尾添加另一条规则来禁止访问其他内容:
RewriteRule ^(.*)$ - [F]
为了避免与图像和CSS的请求发生冲突,您应该添加:
RewriteCond %{REQUEST_FILENAME} !\.(jpg|png|gif|js|css)$ [NC]
RewriteRule ^(.*)$ - [F]
如果您有不可访问的目录,请在其中放置.htaccess,其中仅包含以下内容:
Order deny,allow
deny from all
将所有公共文件重写到假目录
/allow/。
,对于不在/allow/。
目录中的任何请求,显示404
。最后,将文件从/allow/。
重写到真实目录
这是一个很好的解决方法,IMO:)比在每个目录中使用
deny all
要好…尝试以下方法,但用404页面替换index.php
:
Order allow,deny
Allow from all
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$l [L]
这应该将所有未找到的文件和目录请求重定向到index.php
或您选择的脚本文件,例如404页面。只需记住将标题设置为404响应代码
我从CodeIgniter的维基页面上得到了这个
当我试图解决类似的问题时,他们的wiki页面非常有用。我只是尝试添加您告诉我的内容,这在应该显示的页面上造成了“禁止”…谢谢。。。我最终发现了一些不在htaccess中的东西。。。我使用页面代码检查数据库中的slug,如果没有,则将标题更改为404。