I'm trying to create a site whereby I can specify links as follows:
https://www.example.com/wildcard/parameter
I would like the above link to load the index.php file in the /wildcard directory and pass the parameter to the index file as index.php?type=parameter
However have the rule so that the subdirectory name could be anything.
I've tried numerous htaccess examples, however they either load the root index.php (homepage) file or return a requested url not found message
Essentially I would like:
https://example.com/wildcard/parameter
to behave the exact same way as
https://example.com/wildcard/index.php?type=parameter
But be flexible enough allow the subdirectory to have any name.
Can anyone help?
This should point you into the right direction:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/([^/]+)/(\w+)/?$
RewriteCond /%1 -d
RewriteCond /%1/index.php -f
RewriteRule ^ /%1/index.php?type=%2 [END]
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 rule 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.