简体   繁体   中英

.htaccess Rewrite for different domains

Below is my tried existing .htaccess rules setting

RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteRule ^api/([a-z]{1,3})/([0-9a-zA-Z]{1,15})$ api.php?ac=$2&type=$1 [L]
RewriteRule ^s/([0-9a-zA-Z]{1,15})$ init.php?ac=$1&type=s [L]
RewriteCond %{REQUEST_URI} !^.*\.php$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{REQUEST_FILENAME}.php

I park several domains exampleA.com and exampleB.com to example.com

I want to rewrite the below cases

example.com/s -> error 404 page
example.com/s/ -> error 404 page
example.com/s/abc -> init.php?type=s&account=abc
example.com/api/s/abc -> api.php?type=s&account=abc

Other than example.com

exampleA.com -> init.php?type=d
exampleB.com -> init.php?type=d
exampleA.com/abc -> init.php?type=d&account=abc
exampleB.com/abc -> init.php?type=d&account=abc
exampleA.com/api/abc -> api.php?type=d&account=abc
exampleB.com/api/abc -> api.php?type=d&account=abc

How do I write the RewriteCond and RewriteRule to archive this?

With your shown attempts, please try following htaccess rules in your rules file. Make sure you have cleared your browser cache before testing your URLs. This also considers that your all multiple subdomains have same folder path.

RewriteEngine ON
##Rules for example.com/s OR example.com/s/ to redirect to 404 here.
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^s/?$ - [R=404,NC,L]

##Rules for example.com/s/abc -> init.php?type=s&account=abc
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(s)/(abc)/?$ init.php?type=$1&account=$2 [NC,QSA,L]

##Rules for example.com/api/s/abc -> api.php?type=s&account=abc
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(api)/(s)/(abc)/?$ $1.php?type=$2&account=$3 [NC,QSA,L]

##Rules for exampleA.com -> init.php?type=d AND for exampleB.com -> init.php?type=d
RewriteCond %{HTTP_HOST} ^example(A|B)\.com$ [NC]
RewriteRule ^/?$ init.php?type=d [L]

##Rules for exampleA.com/abc -> init.php?type=d&account=abc AND for exampleB.com/abc -> init.php?type=d&account=abc
RewriteCond %{HTTP_HOST} ^example(A|B)\.com$ [NC]
RewriteRule ^abc/?$ init.php?type=d&account=abc

##Rules for exampleA.com/api/abc -> api.php?type=d&account=abc AND for exampleB.com/api/abc -> api.php?type=d&account=abc
RewriteCond %{HTTP_HOST} ^example(A|B)\.com$ [NC]
RewriteRule ^(api)/(abc)/?$ $1.php?type=d&account=$2 [NC,QSA,L]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM