/ / Prečo tento kód htaccess nefunguje tak, ako by mal? - .htaccess

Prečo tento kód htaccess nefunguje tak, ako by mal? - .htaccess

Mám problém s mojím kódom htaccess.

Keď sa pokúsim načítať example.com/user/register/, prečítaná stránka je profile.php

Keď sa pripojím example.com/user/register, funguje to dobre a číta register.php

Ako môžem upraviť tento kód htaccess tak, aby používal example.com/user/register/?

RewriteRule ^user/register?$ register.php [L]
RewriteRule ^user/register?$ /user/register/ [R=301,L]

RewriteRule ^user/?$ user.php [L]
RewriteRule ^user?$ /user/ [R=301,L]

RewriteRule ^user/(d+)/$ profile.php?id=$1 [L]
RewriteRule ^user/(d+)?$ /user/$1/ [R=301,L]

RewriteRule ^user/([^/]+)/$ profile.php?username=$1 [L]
RewriteRule ^user/([^/]+)?$ /user/$1/ [R=301,L]

odpovede:

1 pre odpoveď č. 1

Používate po použití / user / register / alebo / user / register?

Z vzhľadov vašich aktuálnych prepisov steprepisovanie / user / register tak, aby ukazovalo na /register.php a potom ho presmerovalo na / user / register /, hoci by sa toto presmerovanie nikdy z dôvodu [L] v predchádzajúcom pravidle.

Ak chcete použiť / user / register / navrhol by som vyskúšať:

RewriteRule ^user/register/$    /register.php [L]
RewriteRule ^user/register$     /user/register/ [R=301,L]

Ak chcete / používateľa / zaregistrovať, mali by ste potrebovať:

RewriteRule ^user/register$     /register.php [L]
RewriteRule ^user/register/$    /user/register [R=301,L]

Ak vám nezáleží na tom, či má adresa URL koncové lomítko alebo nie, urobilo by to:

RewriteRule ^user/register/?&   /register.php [L]

Ďalším bodom, ktorý by ste mali zvážiť, by bolo, že ak nechcete, aby žiadna z vašich adries URL obsahovala koncové lomky, môžete použiť všeobecné presmerovanie v hornej časti stránky .htaccess namiesto presmerovania pre každú stránku:

RewriteRule ^(.*)/$    /$1 [R=301,L]