Запрос веб-конфигурации - PullRequest
0 голосов
/ 18 ноября 2011

У меня нет большого опыта работы с файлами web.config, но я пытаюсь перенаправить все запросы на index.php только добавить ?url=REQUESTED_PAGE

например

если вы пошли на domain.com/about.php?query=string

будет переписывать URL-адрес как domain.com/about/ для пользователя но обработать URL domain.com/index.php?url=about.php&query=string

Идея состоит в том, чтобы иметь приятные на вид удобные для пользователя URL-адреса, в то время как index.php определяет, какую страницу показывать пользователю. (хорошо я использую smarty, так какой шаблон использовать)

РЕДАКТИРОВАТЬ: я ищу помощи с web.config, а не .htaccsess Я ограничен хостингом клиентов, и это, к сожалению, не apache, и единственный мод, который я могу найти, который может работать или не работать с iis7.5, это £ 45, на которые я не могу получить финансирование: (

РЕДАКТИРОВАТЬ: моя последняя попытка

<rules>
  <rule name="page proc" stopProcessing="true">
    <match url="domain.org.uk(.*?)\?(.*)" />
    <action type="Redirect" url="{R:0}?url={R:1}?{R:2}" />
  </rule>
</rules>

Я думаю, что я близко, но все еще не работаю

РЕШЕНО ::! КОНЕЦ РЕЗУЛЬТАТА!

<rewrite>
    <rules>
            <rule name="page proc">
                <match url="(.*?)\/" />
                <action type="Rewrite" url="/index.php?url={R:1}" appendQueryString="false" logRewrittenUrl="true" />
                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    <add input="{QUERY_STRING}" pattern="(.*?)(css|js|pdf|jpg|png|gif)" negate="true" />
                </conditions>
            </rule>
        </rules>
    </rewrite>

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

Вам нужно создать файл .htaccess со следующим:

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

Это передаст все запросы (если это не существующий файл или каталог) вашему скрипту index.php, и вы сможете узнать, что запросил пользователь в вашем скрипте PHP, выполнив:

<?php
echo $_GET['url'];
?>

Таким образом, вы можете разделить переданный параметр url по слешам и передать его соответствующему контроллеру или как угодно.

Причиной того, что вы не переписываете существующие файлы или каталоги, являются статические файлы, такие как изображения, таблицы стилей, файлы JavaScript и т. Д. В противном случае запросы на те файлы, которые do существуют, все равно будут переданы в ваш скрипт index.php .

Кроме того, флаг QSA после RewriteRule позволяет вам продолжать использовать строки запросов в URL-адресах, если вы хотите использовать такие параметры, как форма поиска и разбиение на страницы, если вы предпочитаете использовать параметры $_GET для них, а не сегментов URL-адресов. .

0 голосов
/ 19 ноября 2011

Вот решение, которое вы спросили:

RewriteRule (.*) index.php?url=$1 [NC,L]

Пожалуйста, скажите мне, если это работает.

...