简体   繁体   中英

Using mod-rewrite with multiple pages

Simplified Question

I changed domain.com/folder/client.php?id=1 to 1.domain.com with this .htaccess code

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$ [NC]
RewriteRule ^$ /client.php?id=%2 [QSA,NC]

Now I want to change domain.com/folder/about.php?id=1 to 1.domain.com/about .

Is it possible ? or is there any other ways to do this?

Thank you :D


Old Question

In my directory, I have 2 pages ( client.php , about.php ). I've already set a wildcard subdomain to the page directory and changed domain.com/folder/client.php?id=1 to 1.domain.com . This is my .htaccess code :

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.domain.com$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$ [NC]
RewriteRule ^$ /client.php?id=%2 [QSA,NC]

Now, I need to add another page. So, in client.php page, there's a button to go to about.php page in the same directory. I tried 1.domain.com/about.php and it's not working.

Do I have to create another line of RewriteCond ? or is there any other ways to do this?

Thank you very much :D


Updated Code without working id

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.domain.com$             [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$   [NC]
RewriteCond %{REQUEST_URI} !^/about                    [NC]
RewriteRule ^$ /client.php?id=%2                   [QSA,NC]

RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domain.com$                [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/about                        [NC]
RewriteCond %{REQUEST_URI} !about\.php                    [NC]
RewriteRule . /about.php?id=%1                            [L,QSA]

**The code resolved the text in url box. Let's say id=1 . Now it's showing 1.domain.com/about.

the php code : `$_GET["id"]` is not specified.**

Thanks to faa for the edit :D


The Full Solution

Refer Using mod-Rewrite with 5 pages (wildcard sub-domain)

You may try this:

Options +FollowSymLinks
RewriteEngine on

## This is the actual rule-set that works as it is according to the OP
RewriteCond %{HTTP_HOST} !^www.domain.com$             [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([^.]+).domain.com$   [NC]
# Added to exclude folder `/about`
RewriteCond %{REQUEST_URI} !^/about                    [NC]
RewriteRule ^$ /client.php?id=%2                       [L,QSA,NC]

## This is the additional rule set
RewriteBase /
RewriteCond %{HTTP_HOST} !^www.domain.com$             [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.domain\.com$ [NC]
RewriteCond %{REQUEST_URI} ^/about                     [NC]
RewriteCond %{REQUEST_URI} !about\.php                 [NC]
RewriteRule . http://domain.com/folder/about.php?id=%1 [L,QSA]

Maps silently

http://N.domain.com/about with or without trailing slash

To:

http://domain.com/folder/about.php?id=N

For permanent and visible redirection, replace [L,QSA] with [L,R=301,QSA]

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