我有一个网站,使用mod_rewritedynamic虚拟子域,如下定义: <VirtualHost *:80> ServerName example.com ServerAlias *.example.com DocumentRoot /var/www/example.com/www RewriteEngine on RewriteCond %{HTTP_HOST} ^[^.]+\.examle.com$ RewriteRule ^(.+) %{HTTP_HOST}$1 [C] RewriteRule ^([^.]+)\.example.com(.*) /var/www/example.com/$1$2 </VirtualHost> 问题是,我想要一个特定的url,说subdomain.example.com/CONTROL/指向www.example.com/使用代理(而不是URLredirect)。 我曾尝试添加: RewriteRule ^([^.]+)\.example.com/CONTROL(.*) /var/www/example.com/www$2 [P] 但是这没有用。 有任何想法吗?
这是一个复杂的,我希望有一个简单的答案… RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) category.php?c_id=$2&filters=$3&_p=$4&name=$1 这个规则将拿起类别/厨房/ 10 / 0-0-0-0-0-0-0-0 / 1 与下面的瓦尔: category.php?c_id=10&filters=0-0-0-0-0-0-0-0&_p=1&name=kitchen filter存储在0-0-0-0-0-0-0-0的原因是由于9回参考限制。 每个0都是一个不同的filtervariables,我通过在$ _GET ['filter']上进行拆分来访问。 我现在正在将我的URL更改为非模式重写的URL,以便重写规则变为: RewriteRule ^category/([^.]+)/([0-9]+)/([^.]+)/([0-9]+) category.php?c_id=$2&filters=$3&_p=$4&name=$1 [R=301,L] 注意到[R = 301,L],所以它变成了301redirect。 这一切都很好,但我想知道是否有一个巧妙的方式分裂0-0-0-0-0-0-0-0,使每个0是一个variables。 所以我可以得到 category.php?c_id=10&f1=0&f2=0&f3=0&f4=0&f5=0&f6=0&f7=0&f8=0&_p=1&name=kitchen 任何想法? 提前致谢!
我需要用mod_rewrite完成以下内容: URI request: http://domain.com/user/username/ or http://domain.com/user/username URI translate: http://domain.com/?q=user/username 这需要非常具体,没有通配符。 一位mod_rewrite和regex的专家可以帮忙吗? 谢谢!
我在Debian服务器上有一个Apache 2,我正在尝试基于dirnames做dynamic子域名。 绑定configuration为通配符dns条目。 例如: 这是用户的www这个特定的目录。 让它成为/ home / user / sites / nameofthesite / 。 该站点的日志位于/ home / user / sites / logs / nameofthesite /中 。 假设用户将拥有比主页更多的网站,为每个用户创buildconfiguration文件中的单独虚拟主机条目是不方便的。 这就是为什么我想重写nameofthesite.user.example.com 这个名字 。 我尝试了几种方法,但仍然无法做到。 请帮忙 ;]
我正在帮助一个朋友从一个wordpress网站的外包引起他的错误(错误#1)恢复,我有这个奇怪的错误。 他使用的托pipe似乎将自动redirectwww.domain.com到domain.com(NFI为什么),除了IE浏览器(我知道正确的! 因此,添加第一个redirect固定,直到我添加了固定链接redirect。 现在当IE浏览器像http://www.domain.com/?p=520旧的WordPress的链接redirect失败。 RewriteEngine On RewriteBase / # Rewrite rule for wierd redirect issue RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule ^/?(.*)$ "http\:\/\/doman\.com\/$1" [R=301,L] # Rewrite Rule for Wordress Permalinks RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 我testing了这个wget,它抱怨: 错误:redirect(301)没有位置。 所以,IE似乎有可能遭受同样的错误(没有有用的错误信息)。 但我不知道如何解决这个问题。 我希望他会改变托pipe公司,但我们会看到。 在此期间有什么想法?
我想要将用户从http://uppereast.comredirect到http://nyclocalliving.com 。 这是我下面的.htaccess文件,但我没有被redirect到我的新url。 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} ^uppereast.com$ [NC] RewriteRule ^(.*)$ http://nyclocalliving.com [L,R=301] … 我错过了什么? 谢谢
我的.htaccess有这个简单的mod_rewrite规则,而且我的浏览器工具(Firebug和Web Dev Toolbar)和我的apache日志都显示服务器返回的是404而不是403.只是想知道这是否正常,如果不正确,我可以补救吗? <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REMOTE_ADDR} !^(192\.168\.0\.11|192\.168\.0\.161)$ RewriteRule ^(admin|login\.php) – [F] </IfModule> 服务器回复: GET login.php 404 Not Found 日志文件显示: (404) (Request:) "GET /login.php HTTP/1.1" 编辑1: 还有一件事。 我应该在[F]禁止之后join[L]最后一个标志吗? 例如[F,L]谢谢! 🙂 编辑2: 有问题的文件绝对存在。 当我更改IP地址以允许自己访问时,我可以通过http向他们发送问题。 此外,当我将[F]更改为[G]时,将返回预期的服务器响应(410 Gone)。
我有Tomcat的前面的Apache,使用mod_rewrite和mod_proxy中继请求,同时直接提供静态内容。 Tomcat服务器可能会陷入停顿并停止响应,或者只是简单的崩溃。 我的问题是,在这种情况下,它需要与Apache的httpd下来。 甚至在我把Tomcat设置成直线后,它也不会回来。 发生这种情况时,再次运行apache的唯一方法是发出一个停止命令,然后kill -9剩余的apache进程,最近我还必须运行ipcrm来删除信号量,否则我得到一个“设备上没有剩余空间”错误。 我的猜测是,所有的Apache的工人都成为代理线程,等待超时,而没有其他任何服务。 我不想更改ProxyTimeout ,因为在正常的操作过程中,一些请求确实需要很长时间。 但是我想告诉apache停止所有正在等待的代理请求,并重新开始。 有这样的事情,还是有另一种方法,我应该这样做? 我使用的是Ubuntu 8.04。
我正在尝试检测现有的目录,支持在URL中使用和不使用尾部斜杠,但是不对丢失的斜杠进行redirect。 这是规则: RewriteCond /home/user/public_html%{REQUEST_URI} -d RewriteRule ^ /home/user/public_html%{REQUEST_URI} [L] RewriteCond /home/user/public_html%{REQUEST_URI}/ -d RewriteRule ^ /home/user/public_html%{REQUEST_URI}/ [L] 当URL包含结尾斜线时,第一条规则正常工作,但第二条规则不适用于没有尾随斜线(例如/ foobar / works但/ foobar不)。 我怎样才能设置这个没有做30倍的redirect?
我工作的大学计划提供Drupal托pipe给想要Drupal站点的职员/教员。 我们已经build立了干净的网站Drupal多站点,它主要工作,除了一些奇怪的redirect。 如果你有两个站点,一个是另一个的子串,那么你将被随机地redirect到另一个站点。 我跟踪了如何mod_rewritepath匹配的问题,所以这样的configuration文件: RewriteCond %{REQUEST_URI} ^/drupal RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /drupal/index.php?q=$1 [last,qsappend] RewriteCond %{REQUEST_URI} ^/drupaltest RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /drupaltest/index.php?q=$1 [last,qsappend] / drupaltest将匹配/ drupal行,并且/ drupaltest页面上的所有链接将被重写为指向/ drupal。 如果在每个重写条件的末尾放置string字符($)的末尾,那么它总是在正确的位置上匹配,并且链接将始终正确地重写。 一旦用户login,就会崩溃,因为查询string被追加到url,所以只有基本的URL不再匹配。 您还可以通过在configuration文件中排列网站来解决问题,以便最小的子string始终保持最后。 我build议将所有站点存储在一个表中,然后在每次请求Drupal站点时查询,sorting和重写configuration文件,以便我们保证顺序。 系统pipe理员认为这很糟糕,没有解决根本问题。 禁用干净的URL也应该解决这个问题,但用户真的想要他们,所以我宁愿保持他们,如果可能的话。 我认为我们也可以通过在每个站点中使用.htaccess文件来解决这个问题,以处理干净的URL重写,但这似乎也不是最理想的,因为它会在服务器上产生更高的负载,而服务器旨在承载大学的大部分外部面对networking内容。 是否有一些我可以用mod_rewrite来实现它的魔法? 另一个解决scheme会更好吗? 我做了一些错误的方式吗?