.htaccess rewrite: subdomain as GET var and path as GET var

Desired Result:

http://example.com/ -> index.php http://www.example.com/ -> index.php http://hello.example.com/ -> index.php?subdomain=hello http://whatever.example.com/ -> index.php?subdomain=whatever http://example.com/world -> index.php?path=world http://example.com/world/test -> index.php?path=world/test http://hello.example.com/world/test -> index.php?subdomain=hello&path=world/test 

With .htaccess I have right now, I can achieve one or the other re-mapping, but not at the same time.

 RewriteEngine On # Parse the subdomain as a variable we can access in PHP, and # run the main index.PHP  RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} !^www RewriteCond %{HTTP_HOST} ^([^\.]+)\.([^\.]+)\.([^\.]+)$ RewriteRule ^.*$ index.php?subdomain=%1 # Map all requests to the 'path' get variable in index.php RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?path=$1 [L] 

I find it difficult to combine two ... any pointers, please?

EDIT
The undesirable behavior that I am experiencing now is that if I have a subdomain and the path after .com /, only the subdomain will be transferred, that is:

 http://hello.example.com/world-> index.php?subdomain=hello 
+6
source share
1 answer

Use the first rule to add the subdomain parameter without changing the URI, then use the second rule to route the URI to index.php :

 RewriteEngine On # Parse the subdomain as a variable we can access in PHP, and # run the main index.PHP  RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{HTTP_HOST} !^www RewriteCond %{HTTP_HOST} ^([^\.]+)\.([^\.]+)\.([^\.]+)$ RewriteRule ^(.*)$ /$1?subdomain=%1 # Map all requests to the 'path' get variable in index.php RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php?path=$1 [L,QSA] 

The second rule must have a QSA flag, otherwise the query string of the first rule will be lost.

+7
source

Source: https://habr.com/ru/post/951979/


All Articles