Htaccess и учетные записи пользователей

Вы знаете, как твиттер пишет свои URL-адреса следующим образом: twitter.com/{username}?

Как они достигают этого? В нем должно быть некоторое кодирование htaccess. Я попробовал, но мой код запутывается, когда его имя пользователя или что-то еще и показывает одну и ту же страницу снова и снова.

Вот мой код:

RewriteRule ^([^/]+)$ login/id.php?name=$1 RewriteRule ^#/([^/]+)$ tags/tag.php?name=$1 

Поэтому, если я пишу www.mysite.com, он доставит меня на главную страницу, и если я www.mysite.com/{random name that is not a register user} , он снова приведет меня к дому. Это создает серьезную ошибку в URL-адресе. www.mysite.com/index и www.mysite.com/index2 переходят на одну страницу, хотя они представляют собой два разных файла. Кстати, я установил htaccess, чтобы скрыть расширения файлов.

пожалуйста, помогите мне

Related of "Htaccess и учетные записи пользователей"

htaccess не подходит для производительности и более ограничен, чем обработка маршрутизации с помощью php. Во-первых, вы используете htaccess только для того, чтобы направлять большинство запросов в файл php:

 RewriteCond %{REQUEST_URI} !\.(png|jpe?g|gif|css|js|html)$ [NC] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ index.php [L] 

Тогда ваша маршрутизация может быть такой простой, как:

 $pieces = preg_split('-/-', $_SERVER['REQUEST_URI'], NULL, PREG_SPLIT_NO_EMPTY); $username = $pieces[0]; include "users/{$username}.php"; 

но в реальном контексте приложения многое еще предстоит сделать. Существует много фреймовых фреймворков, которые имеют встроенные функции маршрутизации, которые могут вас заинтересовать. Любая основная структура будет включать это.

Ниже приведена небольшая расширенная версия этого ответа в аналогичном предыдущем сообщении: https://stackoverflow.com/a/20034826/1435655

Чтобы расширить немного больше, основная идея, которую используют большинство систем маршрутизации, заключается в том, что вы пишете маршруты, которые вы принимаете, и какие будут обрабатывать их. Когда запрос приходит, эти маршруты ищутся до тех пор, пока не будет найдено совпадение. Подумайте об этом так:

 $myRoutes = [ '/' => 'home.php', '/about' => 'about.php' //etc ]; $route = $_SERVER['REQUEST_URI']; if (in_array($route, $myRoutes)) { include $myRoutes[$route]; } else { echo "Go to a real page. This one doesn't exist." } 

Вы можете расширить это, чтобы определить параметры url, чтобы /users/someDude будет отправляться на users.php и что-то вроде $routeParams['username'] будет иметь значение someDude .

 RewriteRule ^(.*)?$ tags/tags.php?name=$1 [NC,L] 

Только это перепишет все в файл tags / tags.php. Вы можете использовать условные обозначения для исключения определенных важных путей.

 RewriteCond %{REQUEST_URI} !^\/?accounts[.*]$ [NC] RewriteRule ^(.*)?$ tags/tags.php?name=$1 [NC,L] 

… я думаю, что синтаксис условия перезаписи прав, но я его не тестировал …

Таким образом, все в учетных записях / предоставляется как ожидалось, а все остальное направляется в файл тегов. В зависимости от сложности вашего сайта это может быть хорошей или плохой идеей. Если вы сосредоточены на пользователях, и у вас мало других страниц (например, о, faq, контакте и т. Д.), Тогда вы должны быть в порядке. В противном случае вы можете попасть в кошмар для условной сортировки.

Я использовал tag.php как пример, а также / accounts. Я не знаю структуру вашего сайта, поэтому я не знаю ваших конкретных потребностей. Этого должно быть достаточно, чтобы вы начали.

Я хочу сказать, что вам нужно быть готовым иметь много условностей выше правила tags.php htaccess, поскольку вы сравниваете его с первым сегментом uri. Если бы ваш надежный путь был больше похож на http://www.yoursite.com/user/username, это было бы намного проще.