开发者

Hide index.php AND .php from URLs while using QUERY_STRING

开发者 https://www.devze.com 2023-02-01 02:20 出处:网络
I\'d like to be able to hide both index.php and .php from my URLs while using QUERY_STRING. Right now, I\'m successfully hiding index.php (except when accessing certain directories) with the followin

I'd like to be able to hide both index.php and .php from my URLs while using QUERY_STRING.

Right now, I'm successfully hiding index.php (except when accessing certain directories) with the following in my .htaccess:

RewriteEngine On
RewriteCond $1 !^(codex|_core|admin|index\.php) [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]

I'm doing this because I have certain functions, such as login/logout/registration, acting as pages: example.com/login

However, I also have some static pages that wouldn't benefit from being inside one file with a bunch of PHP functions... such as example.com/terms-and-conditions.php

In the spirit of being uniform, how do I turn that URL into example.com/terms开发者_StackOverflow中文版-and-conditions without breaking example.com/login? Is this even possible? I've tried adding the .php removal rewrite about the index.php removal rewrite (obviously removing the .php from index.php) to no avail.

I did try using the solution located here but it broke example.com/login — I assume because the way I'm using functions/queries. Is there just something small I need to change there?


Figured it out! Just needed to combine the two, which seems obvious in retrospect. :)

RewriteEngine On

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{HTTP_HOST} ^www\.domain\.com
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

RewriteCond $1 !^(codex|_core|admin|index\.php) [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L] 

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
0

精彩评论

暂无评论...
验证码 换一张
取 消