Я не могу преобразовать плоскую ссылку в динамическую ссылку через мой файл .htaccess - PullRequest
1 голос
/ 06 июня 2011

РЕДАКТИРОВАТЬ:

Установка Apache2 по умолчанию в системе Ubuntu, похоже, полностью заблокирована.Это также влияет на файлы .htaccess, поскольку они не могут перезаписывать что-либо из конфигурации по умолчанию.

Однако редактирование файла /etc/apache2/sites-available/default предоставило моим .htaccess файлам достаточно привилегий для выполнения того, что я хотелделать:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews

        # Modify this from "None" to "All" (or any other suitable value)
-->     AllowOverride None

        Order allow,deny
        allow from all
    </Directory>
    ...

РЕДАКТИРОВАТЬ:

Вот как выглядит мой .htaccess на данный момент:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)$ $1-$2.php

ПРОИСХОЖДЕНИЕ:

Я нашел несколько инструкций по этому поводу, но я не могу понять это правильно (Да, я так трагически глуп).

Я хотел бы перевести это:

http://www.mydomain.com/flat/link?a=b&c=d

На это:

http://www.mydomain.com/flat-link.php?a=b&c=d

На данный момент я получаю только глупую 404 жалобу на The requested URL /flat/link was not found on this server.

Стоит упомянуть, что 404 на самом деле правильно;в корне www нет файловой структуры, подобной /flat/link, поэтому я переведу вымышленный путь к реальному (поскольку существует файл flat-link.php).Мне сказали, что это не обязательно самая красивая архитектура, но это правильный сценарий, так как я не хочу, чтобы моя файловая структура соответствовала моему REST-api.

Ответы [ 3 ]

0 голосов
/ 06 июня 2011

Почему бы просто не поместить это в httpd.conf (может быть, .htaccess тоже может работать)

DefaultType application/x-httpd-php
DirectoryIndex index index.html

Это скажет, что файлы apache без расширения (DefaultType) должны интерпретироваться PHP.

Таким образом, вы можете переименовать ваш link.php в link

0 голосов
/ 06 июня 2011

Вероятно, вам следует указать директиву RewriteBase по причинам, указанным в в этом ответе .

0 голосов
/ 06 июня 2011

.* соответствует всему, попробуйте сделать его менее жадным, добавив к нему ?:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/(.+)$ $1-$2.php

Если это не работает, попробуйте сопоставить все, кроме косой черты:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/(.+)$ $1-$2.php
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...