.htaccess — создать удобный URL-адрес, содержащий имя пользователя в переполнении стека

Я хочу передать имя пользователя в URL так же, как это делают другие социальные сети, такие как Facebook.
URL должен быть таким: www.mysite.com/username

Также я хочу иметь возможность доступа к каталогам, если значение в месте имени пользователя является именем каталога.

Ex. www.mysite.com/downloads возьму в downloads каталог.

Для этого я могу сначала проверить, где переданное значение является допустимым именем каталога. Если да, обратитесь к каталогу, иначе проверьте, существует ли пользователь с переданным именем пользователя.

для этого то, что я сделал, создал .htaccess файл в корневом каталоге, содержащий

RewriteEngine On
RewriteRule ^ index.php

и проверка на URL

// requested url
$request = $_SERVER['REQUEST_URI'];
// trim last / if available
$url = rtrim($request,'/');
// explode url and save in $ar array
$ar = explode('/',$url);

if(sizeof($ar) > 2)
{
header('location : error/?error=1');
} else {
$user = $ar[1];
}

Вышеприведенный оператор if должен проверить, передан ли параметр, один или несколько.
Ex. www.mysite.com/username/post приведет к неверному URL

Но по этому коду я не смог получить доступ к своему каталогу www.mysite.com/downloads
какой простой способ сделать это.

Изменить 2:

Я хочу URL www.mysite.com/username пройти username как переменная если это не каталог или файл в index.php в myProfile каталог, где это доступ как $user = $_GET['u'];

обновленный .htaccess

# Do not remove this line or mod_rewrite rules and search engine friendly URLs will stop working
RewriteBase /
Options All -Indexes

# Timezone
SetEnv TZ Asia/Kolkata

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /myProfile/index.php?u=$1 [L,QSA]

1

Решение

Попробуйте этот код в /.htaccess:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
DirectoryIndex index.php

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ myProfile/index.php?u=$1 [L,QSA]

Если вы все еще получаете 404 затем проверьте, является ли ваш .htaccess включен или нет, поместив один и тот же мусор (случайный) текст поверх вашего /.htaccess и посмотреть, если он генерирует ошибку 500 (внутренний сервер) или нет, когда вы посещаете www.mysite.com/index.php?u=username URL в браузере.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]