Эй,
Я пытаюсь добиться красивых URL-адресов для своего сайта с помощью механизма перезаписи. Цель такая: mysite.dk/da, mysite.dk/da/success и mysite.dk/da#scroll.
Пока что мой файл htaccess выглядит так:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
DirectoryIndex /index.php
Я пытался реализовать это
RewriteRule ^da$ da.php [L]
RewriteRule ^da/success$ success.php [L]
но это не особо помогло :/ Спасибо

Чтобы получить желаемые красивые URL-адреса, измените файл .htaccess следующим образом:
RewriteEngine on
# Specific rewrites
RewriteRule ^da$ da.php [L]
RewriteRule ^da/success$ success.php [L]
# General rewrites
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
# Default index
DirectoryIndex index.php
da и da/success вверху, чтобы они имели приоритет.[L], чтобы прекратить дальнейшее переписывание в этих конкретных случаях.ну, но затем он ведет меня в репозиторий «da», и чтобы войти на одну страницу «da.php», мне нужно добавить .php, чтобы все заработало, верно? Я заметил, что эти правила в некотором роде пересекаются, поэтому я до сих пор не понимаю, как заставить их работать, но, похоже, это своего рода стандарт для каждого многоязычного сайта, так что это не должно быть так сложно...
Правило RewriteRule ^da$ da.php [L] перезапишет URL-адреса, заканчивающиеся на /da, на da.php.. Флаг [L] остановит дальнейшее перезапись, поэтому у вас не возникнет проблема с добавлением .php к этому конкретному URL-адресу.
Хорошо, я это вижу, но по какой-то причине у меня все еще есть список содержимого этого каталога, когда я ввожу URL-адрес mysite.dk/da, и для доступа к нужному сайту мне все равно нужно добавить .php, например mysite.dk/da.php:/ /не знаю, как публиковать скриншоты в комментариях
Сделайте это так:
# Default index
DirectoryIndex index.php
# disable directory listing and MultiViews
Options +FollowSymLinks -MultiViews -Indexes
# disable automatic addition of trailing / after a directory
DirectorySlash Off
RewriteEngine on
# add .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
Это тоже не работает должным образом :/
Мои извинения. Что ж, мне нужно добавить .php к целевой странице da.php, а также /da/succes.php (по-датски это успех с одним s, я не повторяю это написание снова и снова xD), и избегать их было своего рода суть этой борьбы. Есть ли у вас еще какие-нибудь советы? :)
Потому что я хотел иметь красивый URL-адрес без добавления .php... точно так же, как mysite.dk/home вместо mysite.dk/home.php. Видишь? :)
ок, в каком каталоге находится этот .htaccess и какое значение DOCUMENT_ROOT?
.htaccess находится на самом верху всех каталогов, индексов и других файлов, таких как robots.txt и т. д. Я просмотрел все файлы конфигурации Apache и не нашел ничего, связанного с DOCUMENT_ROOT, и у меня нет файла конфигурации, содержащего этот файл. Я считаю :(
ок, можешь попробовать мой обновленный ответ сейчас
Замечательно, это почти идеально! Прямо сейчас мне все еще нужно добавить .php после успеха, чтобы он работал, так что это так - mysite.dk/da/succes.php, было бы здорово, если бы мы могли заставить его работать как mysite.dk/da/succes :)) Я предполагаю, что это строка кода «RewriteRule ^da/succes$ succes.php [L,NC]». Мне любопытно, каков стандарт для этого, если бы в репозитории «da» было больше страниц, как заставить их все работать таким образом, не создавая правило перезаписи для каждой из них? :) Спасибо, пока
На самом деле вам не нужны никакие правила в строке # Specific rewrites. Я удалил его. Можете ли вы повторить тестирование с моим обновленным кодом .htaccess?
da = dansk = датский