Articles of .htaccess

如何在httpd.conf中编写这些.htaccess规则

我有两个htaccess规则,我想转移到httpd.conf,因为我听说这是更好的性能。 我试着把它们复制到httpd.conf中,但是它没有使用相同的语法,因为它不起作用。 有人可以告诉我这两个.htaccess规则的httpd.conf相当于: # DISABLE HOTLINKING RewriteEngine on # Options +FollowSymlinks RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/.*$ [NC] RewriteRule \.(gif|jpg|jpeg|png|js)$ – [F] # PREVENT ALL ACCESS TO THIS FILE <files admin.php> order allow,deny deny from all </files> 非常感谢。

URL重写无限redirect问题

在我的.htaccess文件中,我有以下行: RewriteRule ^f/(.*)$ /blah.php?g=$1 我正在尝试使url如 example.com/f/three 被解释为 example.com/blah.php?g=three. 但是,像前者一样访问一个url会导致“最大内部redirect”错误。 我究竟做错了什么?

.htaccess RewriteEngine中断CGI应用程序

我的.htaccess文件在我的网站的根目录中,我缩小了问题的单行代码RewriteEngine on 。 我怎么知道这是这段代码? 因为我把除了RewriteEngine on之外的整个.htaccess文件作为一个testing删除了……而我的CGI应用程序仍然崩溃。 如果任何人有任何想法,为什么RewriteEngine on在线决定自行打破CGI应用程序,我很乐意听到! PS – 万一你有兴趣,我想要工作的一段代码是帮助将所有域合并到一个域中(换行符只是为了便于阅读): RewriteEngine on RewriteCond %{HTTP_HOST} ^example.com$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /index\.html RewriteRule (.*) http://www.example.com/ [R=301,L]

如何redirect从no-www到www的所有内容除了less数文件,使用.htaccess?

如何使用.htaccessredirect从no-www到www 除了几个文件以外的所有东西? 我正在使用下面的.htaccessredirectno-www到www。 的.htaccess Options +FollowSymlinks RewriteEngine on rewritecond %{http_host} ^[^.]+\.[^.]+$ [nc] rewriterule ^(.*)$ http://www.%{http_host}/$1 [r=301,nc] 如何为less量文件添加exception? 例如: 1)example.com/page1.html不应该被redirect到www.example.com 2)example.com/xml/page2.xml不应该被redirect到www.example.com 除example.com/page1.html和example.com/xml/page2.xml以外的所有内容应redirect到www.example.com

mod_rewrite:url重写加子域(通配符)同时重写

我有我的.htaccess文件URL重写两个规则: 对于子域重写:xxx.domain.com被内部redirect到file.php?item = xxx RewriteCond%{HTTP_HOST}!^ www.domain.com $ [NC] RewriteCond%{HTTP_HOST} ^(www。)?([^。] +)。domain.com $ [NC] RewriteRule ^ $ /file.php?item=%2 [QSA,nc] 2.一般重写: RewriteRule ^([A-Za-z0-9 _)(:! – ',] +)/?$ file.php?item = $ 1 [L] 我需要做的是编写第三条规则,将这两条规则结合起来而不与它们发生冲突。 也就是说,在这条线的下面(或上面)我需要有这样的东西 RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)\.domain\.com/([A-Za-z0-9_)(:!-',]+)$ [NC] RewriteRule ^$ /anotherfile.php?item1=%2&item2=$1 [QSA,nc] 这样http://xxx.domain.com/yyy将被redirect到anotherfile.php?item1 = xxx&item2 = yyy 任何想法,将工作,或者是什么正确的方式呢?

我怎样才能避免在这个.htaccess文件中的错误?

我有一个博客。 博客存储在我网站的/blog/前缀下。 它具有通常的博客URL,因此文章的URL格式为/blog/:year/:month/:day/:title/ 。 首先,我想自动将访问者redirect到www子域(以防他们离开),并在内部将根URL重写为/blog/ ,以便博客的首页出现在站点的首页。 我用.htaccess文件中的下列一组重写规则完成了这个工作: RewriteEngine On # Rewrite monkey-robot.com to www.monkey-robot.com RewriteCond %{HTTP_HOST} ^monkey-robot\.com$ RewriteRule ^(.*)$ http://www.monkey-robot.com/$1 [R=301,L] RewriteRule ^$ /blog/ [L] RewriteRule ^feeds/blog/?$ /feeds/blog/atom.xml [L] 这工作正常。 问题是,博客的首页现在出现在两个不同的URL: /和/blog/ 。 所以我想将 /blog/ URL redirect到根URL。 最初我试图用以下一组重写规则来实现这一点: RewriteEngine On # Rewrite monkey-robot.com to www.monkey-robot.com RewriteCond %{HTTP_HOST} ^monkey-robot\.com$ RewriteRule ^(.*)$ http://www.monkey-robot.com/$1 [R=301,L] RewriteRule ^$ /blog/ […]

控制通过hgwebdir.cgi服务的多个mercurial回购的克隆访问

可能重复: 使用Mercurial和Apache读取访问控制 我正在尝试为我的客户托pipe多个Mercurial存储库。 我需要单独控制对每个存储库的访问,而不仅仅是访问,而是克隆。 我有一个需要全局身份validation的.htaccess集: AuthUserFile /path/to/hgweb.passwd AuthGroupFile /dev/null AuthName "Chris Lawlor Client Mercurial Repositories" AuthType Basic <Limit GET POST PUT> Require valid-user </Limit> <FilesMatch "\.(htaccess|passwd|config|bak)$"> Order Allow,Deny Deny from all </FilesMatch> 然后在每个存储库中,我都有一个需要有效用户的.hg/hgrc文件 [web] allow_push = <comma seperated user list> 这几乎是我所需要的。 问题是我需要将所有客户端添加到hgweb.passwd ,这使得他们可以克隆所有存储库。 我能想到的唯一解决scheme是在每个存储库中都有另一个.htaccess和.passwd文件。 我不想这样做,似乎有点复杂。 我可以使用allow_push设置hgrc仓库hgrc文件中的每个仓库指定一个授权用户列表。 如果只有一个allow_clone设置以及… 我为hgwebdir.cgifind的所有文档都不完整。 我读了: http://mercurial.selenic.com/wiki/HgWebDirStepByStep http://hgbook.red-bean.com/read/collaborating-with-other-people.html#sec:collab:cgi http://hgbook.red-bean.com/read/collaborating-with-other-people.html 和别的。 我还没有find一个完整的hgrc设置列表。 我猜这是一个Apache问题,而不是一个Mercurial问题。 […]

防止在.htaccess中的RewriteRule循环

我正在尝试引入漂亮的url: RewriteRule ^(.*).html$ index.php?arianne_url=content/$1 [L] 而我想在外部重写访问旧式的url: RewriteCond %{QUERY_STRING} arianne_url=content/([^&]*) RewriteRule ^.* /%1.html? [R=301] 问题是这个循环无止境。 我试图定义env并检查它,但是这仍然导致无限循环 RewriteRule ^(.*).html$ index.php?arianne_url=content/$1 [L,env=arianne:rewrite] RewriteCond %{env:arianne} ^$ RewriteCond %{QUERY_STRING} arianne_url=content/([^&]*) RewriteRule .* /%1.html? [R=301] 我必须在.htaccess中执行此操作,因为我无权访问服务器configuration文件。 编辑: 日志文件: http : //pastebin.ca/1927769 # enable nice urls RewriteRule ^(.*).html$ index.php?arianne_url=content/$1 [L,env=arianne:rewrite] # Redirect old style request to new nice url RewriteCond %{env:arianne} ^$ […]

用多个参数使用.htaccess重写URL

我一直在试图在过去的几个小时里创build一些重写规则,而且我失败了。 如果有人能帮忙,我会非常感激。 我有四个不同types的重写,我试图做与每个参数中的多个。 首先,没有修改的url: http://www.example.com/index.php?p=/category/page-slug&pn=2/ http://www.example.com/index.php?p=/category/&f=feed/rss (feed, feed/, feed/rss, feed/atom are the only possible values for the f parameter) http://www.example.com/index.php?p=tag&t=tag-one+tag-two+-tag-three&pn=2/ http://www.example.com/index.php?p=search&q=search+query+goes+here&pn=2/ 接下来,我希望能够在浏览器中input: http://www.example.com/category/page-slug/2/ http://www.example.com/category/feed/rss http://www.example.com/tags/tag-one+tag-two+-tag-three/2/ http://www.example.com/search/search+query+goes+here/2/ 最后,我尝试了以及无数的变化: RewriteRule ^([a-zA-Z0-9-/+]+)([0-9]+)$ index.php?p=/$1&pn=$2/ [L] RewriteRule ^([a-zA-Z0-9-/+]+)([a-zA-Z/]+)$ index.php?p=/$1&f=$2/ [L] RewriteRule ^([a-zA-Z0-9-/+]+)([a-zA-Z/]+)([0-9]+)$ index.php?p=/$1&t=$2&pn=$3/ [L] RewriteRule ^([a-zA-Z0-9-/+]+)([a-zA-Z/]+)([0-9]+)$ index.php?p=/$1&q=$2&pn=$3/ [L] 我能够使用以下方式处理p参数: RewriteRule ^([a-zA-Z0-9-/+]+)$ index.php?p=/$1 [L] 但是,其他一切都完全逃脱了我。 我觉得我很接近,但是令人难以置信的是,我不知道有什么办法缩小问题的范围。 它可以工作,也可以不工作。 提前致谢。

使用.htaccess排除私人网站的所有用户代理

关于你想保持私密的网站,在你不能限制/允许你的用户的IP的情况下,密码保护不能实现。 但是你可以让你的用户使用一个自定义的用户代理。 对于第一道防线,我正在考虑拒绝所有用户代理,并允许一个模糊的代理。 Apache文档说: 用户代理访问控制是一种不可靠的技术,因为用户代理标题可以设置为任何东西,在最终用户的意志。 但是我反过来否认所有,只接受一个可能相当有效的方式。 我的问题是1)给出的情况这似乎是一个很好的解决scheme2)是否有一种方法让人们找出哪些用户代理被允许在给定的服务器上?