Demirramon
Demirramon

Reputation: 43

htaccess RewriteRule using slash as get params: can't access other files in the folder

I have a simple user system in my site. The URL works like this: /profile/user?id=user_id

I wanted to do something like /profile/user/user_id instead, and I found the following code to use in htaccess.

RewriteRule ^user/(.*)$ user.php?id=$1 [L]

The code does work as intended, but after doing that I found out that I can't access any other file inside of the profile directory besides the index file. All of them return a 404 error.
There's a couple more of important pages in there, so I would need to access them. I can't access user.php without an ID either, but that's not my main concern, even though I would also like to access it if possible.

I'm not really used to use RewriteRule, so I'm not really sure what's going on here. What can I do?


EDIT: I was asked to give more info, here we go.

The profile folder full route is /en/profile

Structure of the profile folder:

profile/settings.php (directory index)
profile/user.php
profile/change_avatar.php
profile/change_avatar_upload.php
profile/change_email.php
profile/change_password.php
profile/custom_utgen_characters.php
profile/custom_utgen_character_editor.php
profile/reset_password.php

Other lines in the htaccess file:
DirectoryIndex settings.php

htaccess file in the root folder of the website:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

This is all the relevant option I could get, I hope it helps.

Upvotes: 0

Views: 324

Answers (1)

ahendwh2
ahendwh2

Reputation: 382

I tested your rewrite rule and directory structure and had no problems to access files in the profile directory. Can you provide more information like the complete .htaccess file and the directory structure laying under profile?


EDIT: The .htaccess in your profile folder overwrites the .htaccess in your root folder. To prevent this, you have to add the line

RewriteOptions inherit

to the .htaccess file in the profile folder.

Upvotes: 0

Related Questions