我知道如何以一种常见的方式使用Apache的mod_rewrite,但现在我试图以一种不同的方式使用它,这是不成功的。 这是我写的: RewriteEngine on RewriteMap lowercase int:tolower RewriteCond %{lowercase:%{HTTP_HOST}} ^([^.]+)\.internal$ RewriteRule ^(.*)$ http://%1.local$1 这就是整个故事: 我已经添加了两行到我的hosts文件,如下所示: 127.0.0.1 test.local 127.0.0.1 test.internal 我还在我的Apache中添加了test.local的虚拟主机,并创build了一个文件,这样URL http://test.local/info.php打印出PHP的configuration和内容。 现在让我们回到mod_rewrite指令; 我希望通过编写我在post的http://test.internal/info.php写的东西,当我打开URL http://test.internal/info.php它将由test.local/info.php脚本服务。 谁能告诉我我做错了什么? 顺便说一下,我已经写在Apache的主要configuration文件的指令,而不是在虚拟主机,我坚持这一点。 [UPDATE] 我已经添加了以下两行到Apache的configuration文件,所以我可以debuggingRewrite的行为: RewriteLog "/tmp/rewrite.log" RewriteLogLevel 9 我在这台机器上有几个使用Rewrite的虚拟主机,当我访问它们时,由于这两行在指定的path中创build了一个日志文件。 但是当我访问http://test.internal/info.php没有创build日志文件。 [UPDATE] 我要澄清我的目标,也许我从头做了一切错误。 我有许多VPS每个托pipe一个不同的网站。 他们都居住在本地networking,我想添加一个前端到这个网站的集合,所以他们可以从互联网上访问。 但事情是这个集合的成员是dynamic添加或删除,所以我不想修改我的DSN和/或反向代理服务器的configuration文件,每次有所改变。 我可以在DNS服务器中使用通配符将所有请求都指向特定域到前端(反向代理服务器),然后由前端将请求redirect到使用其子域的相应VPS(每个子域是逻辑上分配给VPS)。 为此,我将设置一个本地DNS映射一些虚拟域名到内部VPS IP。 剩下的就是反向代理服务器应该重写请求的URL,使其与虚拟域匹配。 我无法理解的解决scheme的唯一部分是如何告诉Apache将传入请求的域映射到虚拟域! 有什么build议么?
我是新来的网站,我希望你能帮我解决一个我想要安装Rhodecode的问题。 这是(长)故事: 我已经设法在一个linux盒子里的virtualenv里面安装Rhodecode。 使用开发服务器( paster serve production.ini ),我看到它运行完美。 但是,我想使用Apache作为SSL的前端,使用mod_rewrite将http请求redirect到https。 这是我的configuration: 默认vhost.conf <VirtualHost _default_:80> ServerName hg.mydomain.com ServerAdmin [email protected] ServerAlias rhodecode.mydomain.com DocumentRoot "/srv/www/htdocs" RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] HostnameLookups Off UseCanonicalName Off ServerSignature Off …. </VirtualHost> 我使用mod_rewrite而不是redirect,因为我希望我的网站可以被两个域名访问。 我们在hg.mydomain.com有一个网站,我们打算用新的rhodecode.mydomain.comreplace,所以我想在重写规则中保留主机名。 有了这个指令: Redirect permanent / https://hg.mydomain.com/ 该网站运作完美,没有redirect问题发生。 但是,当我浏览到http://rhodecode.mydomain.com ,我被redirect到其他网站,我不能这样做,直到hg.mydomain.com网站被丢弃,hg.mydomain.com指向与rhodecode.mydomain.com相同的IP。 问题 Rhodecode有时会包含对要求身份validation的操作的响应。 例如,如果你是一个客人,并尝试一个私人回购,你被redirect到login屏幕,像这样的url: https://rhodecode.mydomain.com/_admin/login?came_from=%2F %2F是编码的“/”。 login后,我redirect到https://rhodecode.mydomain.com/error/HTTP_NOT_FOUND.html.var ,并显示404错误的apache默认页面。 […]
我试图移植我的一些我的客户在Windows上的Macconfiguration。 由于Windows不是Mac OS,我必须使用php-cgi.exe而不是PHP-FPM。 我已经testing了每个组件,并且一切似乎都起作用,所以我认为这是一个configuration问题。 在我的Mac上,我有这个RewriteRule : RewriteCond %{SERVER_NAME} ^([^.]+)\.([^.]+)\.dev$ RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000%{DOCUMENT_ROOT}/%2/%1/$1" [P] 我已经添加了RewriteCond以便您可以看到%1和%2来自哪里。 在我的Mac上,它工作正常,因为%{DOCUMENT_ROOT}以/开头,但在Windows %{DOCUMENT_ROOT}以C:开头。 testing这个configuration时,会产生这个错误: 代理错误 代理服务器收到来自上游服务器的无效响应。 代理服务器无法处理请求GET /。 原因:DNS查找失败:127.0.0.1:9000c: 它看起来(通过查看error.log) 127.0.0.1:9000:C:被认为是IPv6地址的一部分,它在日志中被转换为[127.0.0.1:9000:C:] 。 如果我尝试用/分隔两个部分: RewriteCond %{SERVER_NAME} ^([^.]+)\.([^.]+)\.dev$ RewriteRule ^/(.*\.php(/.*)?)$ "fcgi://127.0.0.1:9000/%{DOCUMENT_ROOT}/%2/%1/$1" [P] ^ 我得到这个错误: 没有指定input文件。 实际上,到目前为止我testing过的所有东西都有这个错误。 有解决scheme吗?
我有一个使用Restful API教程的apache htaccess文件 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-s RewriteRule ^(.*)$ api.php?rquest=$1 [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*)$ api.php [QSA,NC,L] RewriteCond %{REQUEST_FILENAME} -s RewriteRule ^(.*)$ api.php [QSA,NC,L] </IfModule> 我的nginxconfiguration目前是: server { listen 80; server_name example.org; access_log /var/log/nginx/access.log main; location / { index index.php index.html index.htm; } error_page 404 /404.html; location = […]
我有Apache / PHP的设置完全是这样的: https : //wiki.apache.org/httpd/PHP-FPM 它包括所提到的ProxyPassMatch规则: ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/path/to/files/$1 这发送所有请求.php在它的代理,并最终服务的PHP就好了。 但是,我一直在尝试做一些访问控制,代理似乎优先。 我的文件夹结构是这样的: / <– PHP files /extra/ <– PHP files /css/ /img/ 应该有权访问根目录中的PHP文件,但我想限制访问extra目录。 我已经将这些行添加到我的主要configuration: <Directory "/extra"> Order deny,allow Deny from all </Directory> 但PHP文件仍然执行…当我把一个不同types的文件在文件夹中,它被成功阻止,所以指令工程。 我猜ProxyPassMatch规则是禁止它为PHP文件工作。 我已经尝试了一些东西,比如将ProxyPassMatch规则放在一个<Directory>块中(不起作用,因为你不能在这样的块中使用ProxyPassMatch )并用[P]标志replaceProxyPassMatch来写一个RewriteRule (类似于这个: Apache 2.4 + PHP-FPM + ProxyPassMatch ,但是没有被代理)。 我的问题几乎和这个一样: http : //www.gossamer-threads.com/lists/apache/users/417758 。 然而,它没有得到明确的答案。 让我感到困惑的是你需要有代理规则,但是当你把它放进去的时候,没有其他东西似乎很重要(.htaccess也不能工作了)。 此外,这提出了有关安全的问题。 所有带.php东西都没有受到我想象的访问规定的影响,直接进入系统的内部。 如何将PHP-FPM与Apache中正确的安全规则结合起来?
我有一个非常基本的HTML演示文稿,我想使用Apache mod_rewrite来处理URL。 home.html只是一个介绍页面,但是我希望在没有REQUEST_URI时调用它 RewriteCond %{REQUEST_URI} ^/$ RewriteRule ^ home.html slides.html呈现所有幻灯片。 我使用handlebars.js从.json文件中提取数据,然后根据下面的URL结构呈现每个幻灯片: /?q=N RewriteCond %{REQUEST_URI} ^/\?q=\d+$ RewriteRule ^ slides.html 两者似乎都很好,但两者都不存在。 我错过了什么?
有谁知道如何使用Apache 2.4在CentOS 7机器上正确configurationPHP / FastCGI? 在Apache虚拟主机configuration文件中,我有这样的: <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> 它的作品,但只适用于以.php结尾的文件(我可以访问控制面板而不是网站) CMS输出的页面没有任何扩展名,我得到一个“访问被拒绝”。 当我访问一个页面时出错。 页面(CMS模板)不包含PHP代码,但他们似乎受此影响。 我怎样才能确定,这也适用于没有任何扩展的页面? 非常感谢!
我正在调查网站上的性能问题。 我们使用的软件需要htaccess(即,如果不存在,它会生成.htaccess本身,因此将规则移到httpd.conf不是一个选项)。 不过,我们也有很长的(mod_rewritten)url,尤其是图片。 所以看着strace,我可以看到我们在一个页面上有10个图像,所有的path都像 /img/p/12/13/14/14.jpg 它正在寻找60个文件夹中的htaccess只为图像。 反正告诉Apache只使用在/ var / www / html / site使用的.htaccess而不是查找任何其他.htaccess文件?
PHP版本5.4.41 Apache版本2.2.15 Linux版本2.6.32 CentOS 6.6 我有一些代码不会正确redirect。 有很多的代码和configuration,所以我会尽量保持简单。 我的会话在头redirect后不断丢失。 没有错误,没有警告…redirect进展良好。 我session_start(); 和var_dump [$ _ SESSION]在页面redirect后得到NULL。 如果我session_start和redirect之前转储,会话转储罚款。 我猜测这与htaccess mod_rewrites在页面之间放置会话有关,但我不确定如何解决这个问题。 我一直在阅读添加[L,QSA],但这并没有帮助。 对于不使用mod_rewrites的同一台服务器上的简单页面,会话工作正常。 我认为该域是相同的,看它如何从: http:// localhost:8000 / web / someus /login http:// localhost:8000 / web / someus / home 我chmoded&chownedrecursion整个www文件夹,以便Apache拥有所有权限,并拥有网站上的所有内容。 .htaccess文件如下所示: RewriteCond %{REQUEST_URI} !=/web/[a-z0-9]{6}/index.php RewriteCond %{REQUEST_URI} !error [NC] RewriteCond %{REQUEST_URI} !css [NC] RewriteCond %{REQUEST_URI} !images [NC] RewriteCond %{REQUEST_URI} !js […]
我有一个域,我试图为错误页面设置自定义redirect。 我的.htaccess文件看起来像这样: RewriteEngine On AddDefaultCharset UTF-8 DefaultLanguage en-US # disable TRACK and TRACE http methods. 'RewriteEngine On' is required! RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|HEAD|PUT|DELETE) RewriteRule .* – [F] Options All -Indexes ServerSignature Off <ifModule mod_headers.c> Header unset X-Powered-By </ifModule> <Files .htaccess> order allow,deny deny from all </Files> <IfModule php5_module> php_value session.cookie_httponly true #php_value session.cookie_secure true </IfModule> RewriteCond […]