Articles of mod rewrite

CodeIgniter,NGINX里面的文件夹不工作

我有一个在NGINX上运行的股票CI应用程序。 没有重写(我尝试了16个小时,并没有得到它的工作,它是500,404,403,或input文件没有指定),PHP文件传递给PHP-FPM。 这是我的默认文件在可用网站(Ubuntu 12.04,尝试在CentOS上的一切,没有任何工作): server { listen 80; root /usr/share/nginx/www/; index index.php index.html index.htm; server_name fish-in-a-bowl.net; location / { try_files $uri $uri/ /index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www/cloud; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { […]

nginx重写:除了空的基础url

经过两个小时的谷歌search和各种各样的东西,我转向你寻求帮助。 任务:将空白url重写为某个东西,其他所有内容都在nginx中改写。 所以,如果我导航到subdomain.somedomain.tld,我想得到服务的index.php,如果我去subdomain.somedomain.tld / BlAaA,我redirect到index.php?url = BlAaA。 例外是/ img,/ include和index.php本身的文件。 他们不会被重写。 第二部分已经和白名单一样工作了,但是我找不到或者找不到完成这个想法的东西。 工作部分: server { listen 80; server_name subdomain.domain.tld; location / { include php.conf; root /srv/http/somefolder/someotherfolder/; if ( $uri !~ ^/(index\.php|include|img) ){ rewrite /(.*) /index.php?url=$1 last; } index index.php; } } @ pablo-b提供的答案几乎解决了我的问题。 这种方法只有两个问题仍然存在:1:PHP-FPM现在需要在/etc/php/php-fpm.conf中设置/ include /(例如style.css,background.jpg)文件的扩展名.limit_extensions。 我的原始php.conf工作沿线 location ~ \.php { #DO STUFF } 哪个nginx不喜欢,因为它有点覆盖你的build议位置/index.php部分。 […]

我如何在nginx中使用.htaccess文件

我目前正在将我的网站从Apache迁移到nginx ,但我的.htaccess文件无法正常工作。 我的网站位于/usr/share/nginx/html/mywebsite文件夹中。 我如何在我的nginx服务器中使用.htaccess ? 这是我的.htaccess文件: RewriteEngine on RewriteRule video/watch/([a-zA-Z0-9_@$*-]+)/?$ "videos-single.php?id=$1" [NC]

Nginx中$ 0是什么? (mod_rewrite的)

我试图转换我的新的nginx web服务器的Apache重写规则,但我有翻译这个特定的线路的问题: RewriteRule ^(arin|barry|john|ross|danny).*$ /share/$0 [NC] 至于我的旧Apache服务器,这个规则造成的 http://example.com/danny/awesomeVideo.avi来查看http://example.com/share/danny/awesomeVideo.avi ,而不用改变链接。 说实话,由于我的Apache设置很久以前,我甚至不确定在查看文件的人的地址栏中链接是否改变是否是由于这个规则造成的。 大多数在线转换器会为nginx提出这个规则: rewrite ^/(arin|barry|john|ross|danny).*$ /share/$0 last; 不幸的是, $0似乎是错误的,因为这是我重新启动nginx时得到的: 重新启动nginx:nginx:[emerg] 未知的“0”variables nginx:configuration文件/etc/nginx/nginx.conftesting失败 有谁知道如何expressionApache的$0的Nginx?

Apache重写到Nginx重写

我有以下的Apache重写规则: RewriteEngine On RewriteRule ^id/([^/\.]+)$ item.php?id=$1 [L] 我需要能够使用它与Nginx。 这意味着有人可以去http://mysite.com/id/10 ,而不必去http://mysite.com/item.php?id=10 。 任何人都可以帮我转换吗? 提前致谢!

mod_rewrite到nginx重写规则

我将大部分Apache HTTPd mod_rewrite规则转换为nginx的HttpRewrite模块(在每个dynamic请求中都通过FastCGI调用PHP-FPM)。 简单的规则,由硬地点定义工作正常: location = /favicon.ico { rewrite ^(.*)$ /_core/frontend.php?type=ico&file=include__favicon last; } 我仍然遇到正则expression式,这是在mod_rewrite像这样parsing(请注意,我接受在规则内的尾部斜杠,以及追加到每个请求的查询string): mod_rewrite的 # File handler RewriteRule ^([a-z0-9-_,+=]+)\.([az]+)$ _core/frontend.php?type=$2&file=$1 [QSA,L] # Page handler RewriteRule ^([a-z0-9-_,+=]+)$ _core/frontend.php?route=$1 [QSA,L] RewriteRule ^([a-z0-9-_,+=]+)\/$ _core/frontend.php?route=$1 [QSA,L] RewriteRule ^([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)$ _core/frontend.php?route=$1/$2 [QSA,L] RewriteRule ^([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)\/$ _core/frontend.php?route=$1/$2 [QSA,L] RewriteRule ^([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)$ _core/frontend.php?route=$1/$2/$3 [QSA,L] RewriteRule ^([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)\/([a-z0-9-_,+=]+)\/$ _core/frontend.php?route=$1/$2/$3 [QSA,L] 我已经为这个站点提供了以下服务器configuration,但是在parsing一个请求(例如; GET /user/auth )之后遇到了不匹配的规则: 尝试nginx重写 location […]

apache .htaccess到nginx重写规则

我需要从apache更改为Nginx,但.htaccess在Nginx服务器上工作。 我在我的Apache .htaccess : RewriteEngine On # always run through the indexfile RewriteRule .$ index.php # don't let people peek into directories without an index file Options -Indexes 当我把一个.htaccess的Nginx服务器,该文件被删除的服务器。 在什么样的文件,我必须把.htaccess数据(名称和后缀),以及如何重写Nginx和我把文件放在哪里? 我想要所有的子目录文件通过我的index.php文件,所以我可以包括我的index.php文件中的特定文件… 我曾尝试过这样的事情: # nginx configuration autoindex off; location / { rewrite .$ /index.php; } 但它不起作用。 目录看起来像这样: ── root ├── folder1 │ └── folder2 │ └── […]

需要帮助将Apache2重写规则转换为nginx

我已经设法转换其中大部分,但我正在努力与这两个 – RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,QSA,L] RewriteRule !^(media/(.+)|favicon.ico|robots.txt|sitemap.xml|sitemap-main.xml)$ index.php 如果有人是nginx重写忍者:)将感激一个手

nginx代理和404redirect

您好我想要configuration我的nginx服务器代理亚马逊S3,并做类似mod_rewrite在Apache – 如果代理亚马逊是404(文件不存在亚马逊),然后redirect到我的本地文件。 这是可能的吗? 这是我的nginxconfiguration文件: upstream app{ server 127.0.0.1:3000; } server { listen 0.0.0.0:80; server_name www.mypage.com mypage.com; access_log /var/log/nginx/mypagecom.log; location /photos{ proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http://amazons3.mypage.com/photos; proxy_redirect off; error_page 404 /myerrorfile.jpg; } location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy […]

复杂的nginx重写子域的规则

我目前在我的nginx.conf中有以下(hacky)重写规则,允许将dynamic子域redirect到一个Django实例。 set $subdomain ""; set $subdomain_root ""; set $doit ""; if ($host ~* "^(.+)\.domain\.com$") { set $subdomain $1; set $subdomain_root "/profile/$subdomain"; set $doit TR; } if (!-f $request_filename) { set $doit "${doit}UE"; } if ($doit = TRUE) { rewrite ^(.*)$ $subdomain_root$1; break; } 我相信有一个更有效的方法来做到这一点,但我需要改变这个规则,以便任何请求*.domain.com/media/*或*.domain.com/downloads/*去到domain.com/media/*和domain.com/downloads/* 。