问题
I have an htaccess file here
/en/.htaccess
and i would like to make this condition (which is for the main htacces inside public_html) to work also for the subfolder en
RewriteCond %{THE_REQUEST} /events/eventDetails\.php\?id=(.+)&name=(.+)\sHTTP [NC]
RewriteRule ^ /events/%1/%2? [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^events/([^/]+)/([^/]+)/?$ /events/eventDetails.php?id=$1&name=$2 [L]
my htaccess starts like this.
RewriteEngine on
RewriteBase /en/
RewriteRule ^hot-events/?$ hot-events.php [NC,L]
The last line translates the link correctly as www.example.com/hot-events
But i also want it to make the first condition work.
I mean when someone uses this link
https://example.com/en/events/123/abc
it should run the query by this file
https://example.com/en/events/eventDetails.php?id=123&name=abc
Directory Structure
root/
├── .htaccess
├── index.php
├── events/
│ └── eventDetails.php
└── en/
├── .htaccess
├── index.php
└── events/
└── eventDetails.php
回答1:
It's because your rewrite destination is incorrect. You are rewriting to /events/eventDetails.php
instead of /en/events/eventDetails.php
, try :
RewriteEngine on
RewriteBase /en/
RewriteRule ^hot-events/?$ hot-events.php [NC,L]
RewriteCond %{THE_REQUEST} /en/events/eventDetails\.php\?id=([^&]+)&name=(.+)\sHTTP [NC]
RewriteRule ^ /en/events/%1/%2? [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^events/([^/]+)/([^/]+)/?$ /en/events/eventDetails.php?id=$1&name=$2 [L]
来源:https://stackoverflow.com/questions/38328110/rewrite-url-condition-for-subfolder