Сделать разные типы URL-адресов довольно с htaccess

106
10

У меня есть два типа URL-адресов, которые я хочу сделать удобочитаемыми/хорошими:

www.mydomain.com/index.php -> www.mydomain.com/index 
(remove .php)

А также

www.mydomain.com/information.php?=story1 -> www.mydomain.com/information/story1
(replace .php=? with /)
Im using $_SERVER[REQUEST_URI] to grab the "story" from the database

Я пробовал дни и часы, но не могу найти никаких решений. Какие-либо предложения?

спросил(а) 2017-10-13T16:00:00+03:00 2 года, 11 месяцев назад
1
Решение
57

Хорошо, я понял это сам.

Первый: www.mydomain.com/index.php → www.mydomain.com/index (удалить.php)

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Второе: мне пришлось внести несколько изменений, но вот идет:

Цель: www.mydomain.com/information.php?story=1 → www.mydomain.com/information/1

RewriteEngine on
RewriteRule ^information/([A-Za-z0-9-\s]+)$ information.php?story=$1

И это добавляется в php-код:

$story_str = $_GET['story'];
$story_str = 1

В теге вашего php-кода добавьте это, чтобы убедиться, что ваши изображения и CSS загружены:

<base href="/" />

И, наконец, добавьте это в свой.htaccess, чтобы убедиться, что ваши изображения и CSS загружены:

RewriteRule ^detail/(css|js|img)/(.*)?$ /$1/$2 [L,QSA,R=301]

ответил(а) 2017-10-14T17:01:00+03:00 2 года, 11 месяцев назад
40

Вы должны попробовать следующее:


RewriteEngine On

# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]

# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]

# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]

ответил(а) 2017-10-13T16:42:00+03:00 2 года, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема