Could someone help me to convert this rules for nginx? I need it to serve html as xhtml for svg mask in FireFox
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_ACCEPT} application/xhtml\+xml
RewriteCond %{HTTP_ACCEPT} !application/xhtml\+xml\s*;\s*q=0
RewriteCond %{REQUEST_URI} \.html$
RewriteCond %{THE_REQUEST} HTTP/1\.1
RewriteRule .* - [T=application/xhtml+xml]
it is more complex
set $var "q";
if ($http_accept ~ application/xhtml\+xml) {
set $var "q$var";
}
if ($http_accept !~ 'application/xhtml\+xml\s*;\s*q=0') {
set $var "q$var";
}
if ($uri ~ \.html$) {
set $var "q$var";
}
if ($server_protocol = HTTP/1.1) {
set $var "q$var";
}
if ($var = qqqqq) {
add_header 'Content-Type' 'application/xhtml+xml';
}
not tested
Related
htaccess to nginx rewrite conversion help
RewriteEngine On
RewriteCond %{REQUEST_URI} apiv01
RewriteRule ^(.*)$ api.php?params=$1 [NC]
--- edit
I want when access uri GET http://localhost/hospital_project/apiv01/listHospital/3211 can display
{"header":{"code":"401","message":"wrong token"}}
I've used the configuration of anilcetin like this:
location /hospital_project {
if ($uri ~ "apiv01"){
set $rule_0 1$rule_0;
}
if ($rule_0 = "1"){
rewrite ^/(.*)$ /hospital_project/api.php?params=$1;
}
}
Also i've used the configuration of https://winginx.com/en/htaccess like this:
location / {
rewrite apiv01 /hospital_project/api.php?params=$1;
}
But when i access http://localhost/hospital_project/apiv01/listHospital/3211 the output is equal to http://localhost/hospital_project/apiv01 (no effect)
--- edit
Normal if i using http://localhost/hospital_project/api.php?params=apiv01/listHospital/3211
I want to convert these simple rules in NGINX, i used this website (https://winginx.com/en/htaccess) to convert for me the rules, but somehow, instead of going to the page is downloading the page when i click on it.
Here is the example:
I want to convert these rules to NGINX:
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^play/(.*)$ play.php?show=$1 [L]
RewriteRule ^category/(.*)$ category.php?show=$1 [L]
RewriteRule ^contact/(.*)$ contact.php [L]
RewriteRule ^contact$ contact.php [L]
RewriteRule ^terms/(.*)$ terms.php [L]
RewriteRule ^terms$ terms.php [L]
Here is what the website gave me:
# nginx configuration
location /play {
rewrite ^/play/(.*)$ /play.php?show=$1 break;
}
location /category {
rewrite ^/category/(.*)$ /category.php?show=$1 break;
}
location /contact {
rewrite ^/contact/(.*)$ /contact.php break;
}
location = /contact {
rewrite ^(.*)$ /contact.php break;
}
location /terms {
rewrite ^/terms/(.*)$ /terms.php break;
}
location = /terms {
rewrite ^(.*)$ /terms.php break;
}
Someone Can help me?
Thanks a Lot!
You cannot use break here. You should be using last.
The purpose of break is to continue processing within the current location block. In each of the cases above, you require processing to move to the location \.php$ block.
See this document for details.
I'm having an issue with .htaccess.
I have 3 Domains in one Webspace, all directed to the same content: (www.domain1.com, www.domain2.com, www.domain3.com).
Now I want only the www.domain1.com to start with my WordPress site(index.PHP), the other two domains should start with index.HTM, but I don't want to create subfolders, because all Domains shall have access to the same .htm-Files in the root directory – ONLY the start files (index.php/index.htm) should be different. Is it possible to realize this, for example with mod_rewrite in the htaccess? I tried and failed.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.domain1.com
RewriteRule ^/$ /index.php [L]
RewriteCond %{HTTP_HOST} ^www.domain2.com
RewriteRule ^/$ /index.htm [L]
RewriteCond %{HTTP_HOST} ^www.domain3.com
RewriteRule ^/$ /index.htm [L]
I managed to find a solution to my problem using PHP instead of .htaccess. It was not the neatest solution but it solves my issue:
switch ($_SERVER ["HTTP_HOST"]) {
case "www.domain1.com":
if ($_SERVER['SCRIPT_URL'] == '/') {
header("Location: http://www.domain1.com/index.php");
} else {
header("Location: {$_SERVER['SCRIPT_URL']}");
}
break;
case "www.domain2.com":
if ($_SERVER['SCRIPT_URL'] == '/') {
header("Location: http://www.domain2.com/index.htm");
} else {
header("Location: {$_SERVER['SCRIPT_URL']}");
}
break;
case "www.domain3.com":
if ($_SERVER['SCRIPT_URL'] == '/') {
header("Location: http://www.domain3.com/index.htm");
} else {
header("Location: {$_SERVER['SCRIPT_URL']}");
}
}
Please help me convert the following Apache htaccess rules to Nginx
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://192.168.201.112/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://192.168.201.112$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|swf)$ - [F,NC]
Thanks in advance
This configuration means only 192.168.201.112 can access the resouce which has extsion name (jpg|jpeg|gif|png|bmp|swf) in this server. You can use the following nginx config:
location ~ .*\.(jpg|jpeg|gif|png|bmp|swf)$ {
set $hit false;
if ($http_referer ~ "^http://test1.test.com/.*$"){
set $hit true;
}
if ($http_referer ~ "^http://test1.test.com$"){
set $hit true;
}
if ($hit = false) {
return 403;
}
}
How to convert this apache rewrite rule to lighttpd rewrite rule?
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /adpanel/
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Try
server.modules = (
"mod_access",
"mod_rewrite"
)
$HTTP["host"] == "example.com" {
server.document-root = "/var/www/example.com/wwwroot/adpanel/"
$HTTP["url"] =~ "^/application" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/modules" {
url.access-deny = ("")
}
$HTTP["url"] =~ "^/system" {
url.access-deny = ("")
}
## If later than lighttpd 1.4.24
url.rewrite-if-not-file = (
"^/(.*)$" => "/index.php/$1"
)
## If older than 1.4.24 yo will have to reference actual files in the rewrite e.g.
#url.rewrite = (
# "/(css|img|js|stats)/" => "$0", ## $0 means the actual query string i.e don't rewrite.
# "^/(.*)$" => "/index.php/$1"
#)
}
Hope that helps.