I currently have a website that I am trying to optimize in terms of SEO.
I've got the site working with URLs such as:
domain.com/?app=about
In my app, $_GET[app]
is set to 'about', as expected.
Now, I want to make it so that a URL like domain.com/about
is treated as if it were domain.com/?app=about
.
How can I do this in an Apache .htaccess file?
These are known as RewriteRule
s, and they are fairly straightforward:
RewriteEngine on
RewriteRule ^about$ /index.php?app=about
As far as making it more generic, how about this:
RewriteEngine on
RewriteRule ^([A-Za-z]+)$ /index.php?app=$1
This will make any request to something like /staff or /contact redirect to index.php?app=[staff|contact]
Use this in your .htaccess
RewriteEngine on
RewriteBase /your-site # only if neccessary
RewriteRule ^([^/])$ index.php?app=$1 [R,L]
EDIT
I added the L flag meaning process this as the last rule, and the R flag which by itself does not change the URL .. just rewrites internally. Doing R=301 will forward the browser to the rewritten page, which is useful for debugging.
Creating a general .htaccess getting the path requested can be done with the following line:
RewriteRule ^((.+/)+)$ /index.php?path=$1 [L,B]
This will give you the path requested escaped properly so if the requested path is /hello/world you will get hello%2Fworld in the path parameter. Use the PHP function urldecode() to get the original format.
Works only if the url ends with '/'.
NOTE If you have other rewrites in the same file you should place this one last as it will match basically anything.
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.