Apache - 关于mod重写& amp的组合新手问题通过URL限制文件访问

时间:2011-06-01 10:29:42

标签: apache .htaccess mod-rewrite

这是我第一次尝试修改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}}文件。有人可以说明这是怎么做的?我访问此文件的方法来自表单的帖子。

非常感谢。

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.