简体   繁体   中英

Remove sub-directory name from URL using .htaccess

I've installed Wordpress in root directory and CodeIgniter in sub directory. I'm having the following set of urls:

  1. http://www.example.com/about-us (Wordpress)
  2. http://www.example.com/sub-dir/users/login (CodeIgniter)
  3. http://www.example.com/sub-dir/merchant/login (CodeIgniter)

Now I want to remove sub-dir only from second url and the remaining urls should work as they are.

Here is .htaccess code in root directory (Wordpress)

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /yevma/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yevma/index.php [L]
</IfModule>
# END WordPress

Any help would be appreciated!

Your question is vague, we can only assume that you are trying to publish the resource currently reachable via that second URL under a different, shorter URL.

Also assuming that this will not somehow collide with other resources this should point you into the right direction:

RewriteEngine on
RewriteRule ^/?users/login$ /sub-dir/users/login [QSA,END]

Note however tht this might cause issues with the internal references used in those applications you have, since you break the structure with such a single redirection.

In case you receive an internal server error (http status 500) using the rule above then chances are that you operate a very old version of the apache http server. You will see a definite hint to an unsupported [END] flag in your http servers error log file in that case. You can either try to upgrade or use the older [L] flag, it probably will work the same in this situation, though that depends a bit on your setup.

This implementation will work likewise in the http servers host configuration or inside a dynamic configuration file (".htaccess" file). Obviously the rewriting module needs to be loaded inside the http server and enabled in the http host. In case you use a dynamic configuration file you need to take care that it's interpretation is enabled at all in the host configuration and that it is located in the host's DOCUMENT_ROOT folder.

And a general remark: you should always prefer to place such rules in the http servers host configuration instead of using dynamic configuration files (".htaccess"). Those dynamic configuration files add complexity, are often a cause of unexpected behavior, hard to debug and they really slow down the http server. They are only provided as a last option for situations where you do not have access to the real http servers host configuration (read: really cheap service providers) or for applications insisting on writing their own rules (which is an obvious security nightmare).

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