简体   繁体   中英

how can i rewrite my url for only certain pages

How can I use .htaccess to rewrite URL for certain pages only?

For example, I want it to work on index.php but not the rest of the pages on the site or on all pages but index.php.

I run in to issues with sub domains and php scripts where the URL redirecting that I am using will mess up stuff. Below is an example of the kind of script I want to use.

Options +FollowSymLinks -MultiViews

# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/?$ index.php/?node=$1&id=$2 [L,QSA]

RewriteRule ^([^/]+)/?$ index.php/?node=$1 [L,QSA]

Can anyone point me in the right direction?

You can pass URL as REQUEST_URI server variable:

RewriteCond %{REQUEST_URI} ^(your_url)$
RewriteRule %1 do_some_stuff

As an example:

RewriteCond %{REQUEST_URI} ^index.php$
RewriteRule %1 - [F]

Or just pass it in RewriteRule :

RewriteRule ^index.php$ do_some_stuff

You should check out RewriteCond (conditions) for .htaccess Check http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/ for a lot of information and examples.

You could also write a rule just for index.php and then flag it as the last rule [l]

RewriteRule ^/index.php(.*)   /index.php$1  [L]
RedirectRule ^/(.*)$   /index.php?path=$1  [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