这是我第一次尝试修改URL重写和文件访问限制规则。我已经为堆栈和谷歌的相关帖子做了一些阅读,但到目前为止还没有成功得到一个完整的答案。到目前为止,网络上的所有研究信息似乎都是零碎的,并且总是缺少一些关键步骤。
像我这样的新手发现很难连接点,所以我转向stackoverflow
的大师那里寻求帮助。
我将列出我到目前为止所采取的所有步骤,如果有人可以指导我做错了什么,我永远都很好。也许我的分步说明将有助于其他人在将来寻找相同的答案。
Apache配置
1)取消注释httpd.conf文件@conf文件夹中的行
LoadModule rewrite_module modules/mod_rewrite.so
。2)通过使用phpinfo()函数显示php摘要详细信息并搜索字符串“mod_rewrite”来检查是否加载了mod_rewrite。
我想要实现的目标
[网址重写]
**from** : www.domain.com/listing.php?
category=men+casual+pant&title=blue+office+pant&item_ID=123
**to** : www.domain.com/category/men/casual/pant/blue-office-pant_123.html
[限制以下文件的直接访问]
**restrict file** /htdocs/bg_addEditItem.php from direct URL access typing
我做得太远但没有任何作用
1)创建.htaccess文件并将其放在/ htdocs文件夹中,其中包含以下内容
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^category/$1/$2/$3/$4-$5-$6_$7 listing.php?&category=([a-z]+)-([a-z]+)-([a-z]+)&title=([a-z]+)+([a-z]+)+([a-z]+)item_ID=([0-9]+)
2)目前我使用session_id和HTTP-referrer的组合来拒绝直接访问bg_addEditItem.php文件,但我认为必须有一个更简单的方法,即将所有受保护的文件放在一个文件夹中并设置不同的{{ 1}}文件。有人可以说明这是怎么做的?我访问此文件的方法来自表单的帖子。
非常感谢。
答案 0 :(得分:2)
RewriteCond %{QUERY_STRING} ^category=(.*)+(.*)+(.*)&title=(.*)+(.*)+(.*)&itemID=(.*)$
RewriteRule ^$ ^category/%1/%2/%3/%4-%5-%6_%7.html [L]
第二部分
RewriteCond %{HTTP_REFERRER} !^http://(www\.)?yourdomain.com/(.*)$
RewriteRule ^/protectedfolder/(.*) - [R=404] [L]/* Apache will check if url points to your protected folder and if yes , it will check above condition . Above condition will see if the referrer is from you site , if not it will pass and 404 will be returned to user.