Apache重写问题 我把我网站的部分内容在〔xahlee.org〕上改为〔wordyenglish.com〕。 我在〔.htaccess〕中有这个: … RewriteRule ^PageTwo_dir/Vocabulary_dir/(.*)$ http://wordyenglish.com/words/$1 [R=301,L] RewriteRule ^lit/(.*)$ http://wordyenglish.com/lit/$1 [R=301,L] RewriteRule ^lojban/(.*)$ http://wordyenglish.com/lojban/$1 [R=301,L] … 除了从〔点亮/〕开始的目录以外,一切正常。 该错误是在原始域上redirect到404。 没有其他行包含“点亮/”。 点亮目录中没有〔.htaccess〕。 打开重写日志: RewriteLog "logs/xx-RewriteLog.log" RewriteLogLevel 9 似乎不允许或不能用我的networking托pipe环境。 当这些行出现时,浏览器会在任何页面上返回服务器错误。 该问题只发生在一个特定的目录中。 似乎有一些“点亮/ /”的魔法。 任何build议?
在我的httpd.conf中,我有 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^mysite.com [NC] RewriteRule ^(.*)$ https://www.mysite.com/$1 [L,R=301] 但是这不能正常工作。 我想要以下redirect到https://www.mysite.com : http://mysite.com https://mysite.com http://www.mysite.com 我怎样才能做到这一点?
我想代理http://localhost:1006/为http://example.com/public/到外面的世界。 这是我的configuration: RewriteEngine On # Append a slash if necessary RewriteRule ^/public$ public/ [R,L] # Request headers: Replace http://localhost:1006/ with http://example.com/public/ ProxyPass /public/ http://localhost:1006/ # Response headers: Replace http://example.com/ with http://example.com/public/ ProxyPassReverse /public/ http://example.com/ ProxyPassReverseCookiePath / /public/ <Location /public> Require all granted </Location> 这适用于重写头文件,但服务器仍然认为它的上下文path是/而不是/public/所以当它构造的URLembedded到JSON他们是不正确的。 Httpd只重写头文件,而不是JSON文件,所以它没有做任何事情。 我不希望httpd重写JSON(我读的过程是不可靠的)。 我注意到由httpd向服务器发送的Host头包含外部主机名,它使服务器能够更正URL的那部分。 是否有一些其他的头可以设置哪些会指示服务器使用不同的上下文path? 这意味着, 有什么我可以做的httpd这将改变服务器的上下文path,而不直接改变服务器的configuration/代码?
我有我的Apache上的2个虚拟主机的以下configuration: www.domain.com和res.domain.com 。 第一个是开放第二个是仅限注册用户。 <VirtualHost *:80> ServerName www.domain.com DocumentRoot /website/www <Directory "/website/www"> Options FollowSymLinks AllowOverride All RewriteEngine On RewriteCond %{REQUEST_URI} !api/dispatch\.php$ RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^api/.*$ api/dispatch.php [L,QSA] </Directory> </VirtualHost> <VirtualHost *:80> ServerName res.domain.com DocumentRoot /website/res <Directory "/website/res"> Options FollowSymLinks AllowOverride All AuthType Basic AuthUserFile /website/res/users.sec <Limit GET POST> Require valid-user </Limit> </Directory> </VirtualHost> 我想所有的电话http://res.domain.com/api/ […]
我试图用mod_rewritebuild立一个五层深层次结构。 这是我在这一点上所做的。 它适用于最后两个级别(第一个和第二个规则),但不是在那之后。 任何帮助将不胜感激。 RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4&product=$5 [C] RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3&product_sub_category=$4 [C] RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2&product_category=$3 [C] RewriteRule ^([^/]*)/([^/]*)$ /mr/index.php?product_group=$1&product_family=$2 [C] RewriteRule ^([^/]*)$ /mr/index.php?product_group=$1 [L] 我不是一个服务器技术。 我是一个开发人员,只是无法弄清楚这一点。 这些规则中的每一个都能正常工作。 我需要规则从一个层面到五个层面,以及其间的每一个步骤。 我需要深入了解search引擎优化的风格导航。
我想在RewriteRule使用VirtualDocumentRoot设置的值。 Apache 文档说: 另外要确定的是文档根目录(使用DocumentRootconfiguration,并通过DOCUMENT_ROOT环境variables可用于CGI脚本)。 在一个正常的configuration中,核心模块在将URI映射到文件名时被这个模块使用,但是当服务器被configuration做dynamic虚拟主机时,这个作业必须被另一个模块(mod_vhost_alias或者mod_rewrite)接pipe,做映射的方法。 这两个模块都不负责设置DOCUMENT_ROOT环境variables,所以如果有任何CGI或SSI文档使用它,它们将会产生一个误导性的值。 参考文档,似乎我将无法在RewriteRule使用%{DOCUMENT_ROOT} 。 但是在寻找替代解决scheme后,我发现这个票据 (标题: DOCUMENT_ROOT环境variables用VirtualDocumentRoot设置不正确 )说它已经被“2.4.1修复”了。 我正在使用最新(稳定)版本的Apache: $ httpd -v Server version: Apache/2.4.9 (Unix) Server built: Jun 18 2014 03:07:48 …但似乎并不适合我。 testing时, %{DOCUMENT_ROOT}具有httpd.conf中由DocumentRoot设置的默认值。 我想通过VirtualDocumentRootdynamic设置%{DOCUMENT_ROOT} (或任何其他我可以使用的variables)。 这里是我想在httpd-vhosts.conf中使用的: <VirtualHost *:8080> ServerName dev ServerAlias *.dev VirtualDocumentRoot "/usr/local/var/www/.dev/%-2+" RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/$1" [P] </VirtualHost> 有解决scheme吗?
我对此绝对陌生,所以请耐心等待。 我在Lighttpd上安装了MediaWiki,没有任何问题,除了当我尝试跟踪redwerks关于如何缩短Lighttpd上MediaWiki的url时,我总是感到非常沮丧。这就是我所做的: 在lighttpd.conf : ## MediaWiki url.rewrite-once = ( "^/wiki(/|$)" => "/w/index.php", "^/$" => "/w/index.php", ) url.rewrite-if-not-file = ( "^/w/images/thumb/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2", "^/w/images/thumb/archive/[0-9a-f]/[0-9a-f][0-9a-f]/([^/]+)/([0-9]+)px-.*$" => "/w/thumb.php?f=$1&width=$2&archived=1", ) 在LocalSettings.php上: $wgScriptPath = "/w"; $wgScriptExtension = ".php"; $wgArticlePath = "/wiki/$1"; $wgUsePathInfo = true; 帮助是如此赞赏,我可能会很快开始哭泣。
我从零开始设置我的第一个虚拟服务器(提供程序名称省略,但它是一个“滴”)。 我一直在使用WHM一段时间,我觉得我很熟悉它。 具体来说,这是一台运行Apache 2.4的Debian 8机器(它使用apache.conf而不是httpd.conf ) 无论如何,我很难弄清楚在哪里把我认为是全球指令(它们应该适用于每个站点)在每种情况下都可用。 简单的例子是设置默认字符集或启用mod_deflate来激活gzip。 更具体地说,我已经写了重写规则来处理不需要的引用(spam referrer,但我不需要关于这个问题我非常熟悉的build议)。 这基本上是我所拥有的: <IfModule mod_rewrite.c> RewriteEngine on Options FollowSymlinks RewriteCond %{HTTP_REFERER} (badreferer1\..*) [NC,OR] RewriteCond %{HTTP_REFERER} (crappy-referer2\..*) [NC,OR] RewriteCond %{HTTP_REFERER} (webiste-i-hate3\..*) [NC] RewriteRule ^(.*)$ http://%1 [R=301,L] </IfModule> 我很确定我的RegEx是正确的(我想redirect所有的协议,所有的子域和所有包含这些string的TLD)。 我的理解是,如果将这些规则添加到每个vhost指令块中,这些规则就可以工作,但似乎非常多余。 我会很好地应用这些规则在全球范围内,但将其添加到我的apache.conf顶部是行不通的 我是否需要将它们包装在<Directory>块中? 我可以把它们放在<Directory />吗? 我的所有网站都在/var/www/html ,是否需要在<Directory /var/www/html>应用这些规则? 我错过了什么(不是在代码方面,因为这个片段是不完整的,但在订购指令和知道把它们放在哪里)? 我想保持我的.conf文件尽可能简洁,避免使用.htaccess (而不是AllowOverrides出于性能的原因),所以我想弄清楚如何让这个工作在apache.conf (把他们在一个通过include调用的文件是可以接受的,因为已经有几个正在使用)。
我有一个LAMP堆栈。 我正在使用下面的.htaccess文件来自动将请求映射到.php文件: RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ $1.php [NC,L] 所以如果我浏览http://example.com/asdf,“asdf.php ”文件将被加载。 但是,如果我创build一个名称相同的.css文件(即“asdf.css”),那么服务器在浏览到没有扩展名的名称时返回css文件而不是PHP文件。 也似乎发生的.txt文件扩展名,可能是任何其他三个字符的扩展名(虽然不会发生.js文件)。 我不明白为什么会这样。 我对重写规则集的理解是这样的:1)如果被请求的文件不存在THEN 2)如果文件名不包含句点,则将请求redirect到[filename] .php 这怎么能返回一个.txt或.css文件,特别是当匹配的.php文件存在时? 我在这里错过了什么? 谢谢!
我想使用mod_rewrite读取POST请求中发送的参数。 我需要检查值并处理请求。 谢谢, 朱利安