我将Apache服务器设置为侦听端口8080的本地服务器的代理。无论指定有效的代理服务器,它都可以工作。 两种configuration都可以工 configuration1: <Proxy http://localhost:8080> Order deny,allow Allow from all </Proxy> RewriteEngine on RewriteRule ^(.*) http://localhost:8080$1 [P] configuration2: RewriteEngine on RewriteRule ^(.*) http://localhost:8080$1 [P] 任何人都可以向我解释为什么我不需要指定一个有效的代理,如configuration2中所示?
我已经把我的网站从一个Wiki移到了Wordpress,在这个过程中,我意识到我的网站已经打破了一些热门网页的链接。 有没有可能解决这个重写规则? 我需要规则来redirect以“^ / wiki /(.+)$”开头的所有内容到“/ $ 1”,同时也将MediaWiki中使用的“_”字符replace为Wordpress中的“ – ”。 例如: http://example.com/wiki/An_Example_Page 应该指出: http://example.com/an-example-page 有没有可能写出这样一个重写规则? 编辑:似乎Wordpress甚至不在乎如果“/ wiki /”部分被删除 – 提供了slu matches匹配,而且这似乎是不区分大小写的。 所以我需要做的就是把“_”字符改成“ – ”。
我使用这个规则来忽略重写规则中的index.php: RewriteRule ^((?!index\.php)[^/]+)/?$ galeria.php?nome=$1 [L,QSA,NC] 但是我需要在这个规则中包含bio.php和contact.php。 我怎样才能做到这一点?
我有一个辅助域名,我需要它的子域名指向我的主域名。 例如,如果我的主域是example.com ,那么我已经使用example.org指向前者。 我希望达到的主要的所有子域也指向二级域。 我的意思是,例如,如果我有 example.com/about example.com/contact . . . 我希望他们也被指出来 example.org/about example.org/contact . . . 请让我知道如何通过mod_rewrite规则来做到这一点,我通过googlesearchfind的例子,只关注从二级域名redirect到主域名,而不提及如何redirect子域名。 PS:目前,example.org正确地被replace为example.com。 但是对于子域来说并不是这样。 我的意思是, example.org/contact不会被example.com/contact取代。 更新:我的htaccess文件包括以下内容 RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !example.com$ [NC] RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]
我有一个公共目录在/var/www/html的Apache2.4服务器。 在这个目录中,我有一个Wordpress网站,这个.htaccess : RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 在同一级别的WP网站有一个RESTful API的子目录/var/www/html/api/ 并在/var/www/html/temp/ 我想达到的是: 当用户访问mydomain.com或www.mydomain.com ,他应该会看到login页面是以temp为根 当用户使用普通IP访问服务器时,他应该看到WordPress的博客(即xxx.xxx.xxx.xxx/显示为博客根目录),并且应该以相同的方式访问api( xxx.xxx.xxx.xxx/api/… ) 我在.htaccess尝试了很多组合,例如: RewriteEngine On RewriteCond %{HTTP_HOST} ^(www.)?mydomain.com$ RewriteRule ^(/)?$ temp [L] RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 但没有结果。 […]
试图执行以下内容: RewriteRule \.ttf$ – [E=cors:1] Header set Access-Control-Allow-Origin "*.example.com" env=cors:1 Header set Access-Control-Allow-Origin "*.sadface.com" env=!cors:1 然后请求: $ curl -I http://www.example.com/font.ttf … Access-Control-Allow-Origin: *.sadface.com UPDATE 感谢Jenny D,我发现其他地方的重写规则是做一个本地redirect到index.php,所以我修改了以下内容: # Set CORS domain for fonts. RewriteCond %{QUERY_STRING} \.ttf RewriteRule ^(.*)$ $1 [E=cors:1] Header set Access-Control-Allow-Origin "*.example.com" env=cors:1 Header set Access-Control-Allow-Origin "*.sadface.com" env=!cors:1 这提供了以下日志条目: RewriteCond: input='q=font.ttf' pattern='\\.ttf' => matched […]
用Apache,我试图设置一个重写规则,这个规则将被包含在几个虚拟主机中。 其实这个规则文件是包含在2个虚拟主机中的。 第一个虚拟主机只包含这个重写规则(它起作用),并作为Nginx的反向代理: RewriteEngine On Include /etc/apache2/bad-referers 另一个包含一个Wordpress与W3的总caching插件与其Apache的conf和默认的WP .htaccess: RewriteEngine On RewriteCond %{HTTP_HOST} !^domain.tld$ RewriteRule ^(.*) http://domain.tld/$1 [R=301,L,QSA] Include /etc/apache2/bad-referers Include /var/www/d/domain.tld/w3tc.conf 在这种情况下,不好的引用者是不匹配的,而这个规则以[F,L]结束。 域名重写和W3总caching规则运作良好。 我真的不明白。 包含指令的顺序或位置是否重要? 我可能必须将所有这些文件的内容放在vhost指令中吗? 还是RewriteBase? (几乎)完整的虚拟主机通过/服务器信息: 在文件中: /etc/apache2/sites-enabled/domain.tld 1: <VirtualHost *:80> 7: <Directory /var/www/d/domain.tld/html/> 14: RewriteEngine On 16: RewriteCond %{HTTP_HOST} !^domain.tld$ 17: RewriteRule ^(.*) http://domain.tld/$1 [R=301,L,QSA] 在文件中: /etc/apache2/bad-referers 2: RewriteEngine on 5: […]
我正在尝试将www.example.comredirect到https://www.example.wordpress.com上的托pipe博客。 域名redirect工作,但给我一个403错误,因为它redirecthttp到https。 example.com永远不会被用在redirect之外,我不想为它获得一个ssl证书。 也有类似的问题(例如, htaccessredirect到https ),但是这些都解决了问题的两个部分之一( www.example1.com到www.example2.com或http://domain1.com到http://domain1.com )。 这是我目前的.htacess。 如何添加一些实际处理https问题而不会搞乱域redirect的内容? RewriteEngine on RewriteCond %{HTTPS} off RewriteRule (.*) https://www.example.wordpress.com [R=301,L] 更新:我的工作.htaccess文件是这样的; 显然wordpress.com做的redirect到https本身(我知道,但不能够以前工作): Options +FollowSymLinks RewriteEngine on RewriteCond %{HTTP_HOST} ^www.curiouscitytc.com$ [NC] RewriteRule ^(.*)$ http://www.curiouscommute.wordpress.com/$1 [R=301,L]
我想重写这个url: http://cyanogenupdatetracker.com/api/v1/show_devices.php 到http://cyanogenupdatetracker.com/api/v1/devices 我用这个.htaccess文件 Options +FollowSymlinks RewriteEngine on RewriteRule ^devices$ devices/ RewriteRule ^devices/$ /var/www/api/v1/show_devices.php 它总是返回一个404错误,即使我知道,并且100%确定PHP文件存在于给定的位置。 我尝试了一切(PHP文件,自定义虚拟主机,重写基地之前没有path),但没有任何工作。 这个目录的apacheconfiguration如下: Alias /api /var/www/api <Directory /var/www/api> Options FollowSymLinks DirectoryIndex index.php AllowOverride All </Directory> 我完全完成了这一点。 这似乎很简单(只有几个PHP文件),为什么它很难,只是为了简化url,使他们更好。 我究竟做错了什么?????
一位同事build议我把这个从StackOverflow重新发布到ServerFault: 这一直使我疯狂。 我有一个通过Apache Web服务器提供的Web应用程序。 支持应用程序的数据库服务器是Apache CouchDB,它公开了HTTP API来检索文档和stream附件。 我通过提供一个安全对象来保护CouchDB数据库,该安全对象只允许某些用户访问数据库中的数据,并返回401匿名请求到HTTP端点。 我想能够映射公共URL到存储在这个数据库中的文档附件。 所以,我试图在我的.htaccess文件中创build一个重写规则,它将来自某些URL的请求直接代理到CouchDB,同时对用户凭证进行硬编码,如下所示: ## DOWNLOAD STREAM: RewriteCond %{HTTP_HOST} ^example.com$ RewriteRule download/(.*) http://user:[email protected]:5984/database/$1 [P] 在理想的世界中,上面的例子将采用以下URL: http://example.com/download/UUID/attachment.ext 并代理它: http://user:[email protected]:5984/database/UUID/attachment.ext 这个方法确实将请求代理到CouchDB,但省略了URIscheme的userinfo组件。 所以,该请求被视为匿名,我得到一个401错误。 如果从数据库中删除安全性,附件只能stream式传输。 我花了几个小时阅读Apache的configuration和尝试无济于事。 由于所有相关的查询都有类似的关键字,networkingsearch是徒劳的。 我如何确保mod_rewrite包含在代理CouchDB时在重写规则中提供的用户名和密码?