Реврайт правила ($1 и $2)

Inside

Прижился
Регистрация
06.03.2014
Сообщения
31
Реакции
1
Добрый день!

Подскажите пожалуйста. Нужно написать правила для названий страниц с конечным восклицательным знаком и такого вида $1*$2. Пытался слепить из правила (.*)*(.*), но не получается. Может кто сталкивался с таким?

Пример названий страниц:
Россия*Россия
Как жить в России?
 
Но зачем? ЧПУ не корректно настроено или что?
 
Переходя к таким страницам, они ошибку выдают. Это связано с ЧПУ? Я думал правила задаются для такого.
 
Ссылку на вики хоть покажите ), когда чтобы наглядно понять проблему!
 
Ошибка такая вылазит кстати
You don't have permission to access the requested object. It is either read-protected or not readable by the server.
Я понимаю, что ошибка веба. Надо правило дописать к нему, либо в самом файле .htaccess.
 
В .htaccess
Код:
AddDefaultCharset UTF-8

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} wiki.domen.ru
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]
RedirectMatch /wiki/(.*)$ http://wiki.domen.ru/$1

<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

<IfModule mod_gzip.c>
    mod_gzip_on        Yes
    mod_gzip_dechunk    Yes
    mod_gzip_item_include file        \.(html?|txt|css|js|php|pl)$
    mod_gzip_item_include mime        ^text\.*
    mod_gzip_item_include mime        ^application/x-javascript.*
    mod_gzip_item_exclude mime        ^image\.*
    mod_gzip_item_exclude rspheader    ^Content-Encoding:.*gzip.*
</IfModule>

<ifModule mod_headers.c>
    #кэшировать html и htm файлы на один день
    <FilesMatch "\.(html|htm)$">
        Header set Cache-Control "max-age=43200"
    </FilesMatch>
    #кэшировать css, javascript и текстовые файлы на одну неделю
    <FilesMatch "\.(js|css|txt)$">
        Header set Cache-Control "max-age=604800"
    </FilesMatch>
    #кэшировать флэш и изображения на месяц
    <FilesMatch "\.(flv|swf|ico|gif|jpg|jpeg|png)$">
        Header set Cache-Control "max-age=2592000"
    </FilesMatch>
    #отключить кэширование
    <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
        Header unset Cache-Control
    </FilesMatch>
</IfModule>

В LocalSettings.php
Код:
# Расширения
require_once("$IP/extensions/MsUpload/MsUpload.php");
require_once("$IP/extensions/MenuSidebar/MenuSidebar.php");
require_once("$IP/extensions/Tabber/Tabber.php");

# Позволяем загружать файлы
$wgEnableUploads = true;

# Определяем макс. размер файла
$wgMaxUploadSize = 500000000000; 

# Отключаем проверку расширения файла
$wgCheckFileExtensions = false;
$wgStrictFileExtensions = false;

# Отключаем проверку MIME-типов
$wgVerifyMimeType = false;

$wgFileExtensions = array('png', 'gif', 'jpg', 'jpeg', 'svg', 'pdf', 'doc', 'docx', 'xls', 'xlsx','ods','odg','odt');

$wgServer = "http://wiki.domen.ru";
$wgScriptPath      = "";
$wgArticlePath      = "/$1";

function removeExportSpecial(&$aSpecialPages)
{
        unset($aSpecialPages['Export']);
        return true;
}
$wgHooks['SpecialPage_initList'][] = 'removeExportSpecial';

В Apache, это помогло мне заходить на служебные страницы вида, к примеру, Служебная:Статистика
Код:
RewriteEngine On
RewriteRule ^/(.*):(.*) /index.php/$1:$2

Со знаком ?, вики переводит на страницу с таким же именем, но без знака ?. Со знаком * в названии страницы выдает ошибку
You don't have permission to access the requested object. It is either read-protected or not readable by the server.
Думаю, что проблема в настройках правил для вики посредством Apache или файла .htaccess, но решения не знаю.
 
Я бы предложил забекапится.
Грохнуть все конфиги что имеет отношение к формированию URL:
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} wiki.domen.ru
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]
RedirectMatch /wiki/(.*)$ http://wiki.domen.ru/$1

RewriteEngine On
RewriteRule ^/(.*):(.*) /index.php/$1:$2
Код:
$wgServer = "http://wiki.domen.ru";
$wgScriptPath      = "";
$wgArticlePath      = "/$1";

function removeExportSpecial(&$aSpecialPages)
{
        unset($aSpecialPages['Export']);
        return true;
}
$wgHooks['SpecialPage_initList'][] = 'removeExportSpecial';
И настроить нормально: http://mediawiki.ru/forum/threads/402/

И да, если у вас MW на своем поддомене wiki.domen.ru, то проще всего ее разместить прям в корне.
 
У меня она лежит в корневой папке веба. То есть там все поддомены: domen.ru, forum.domen.ru, wiki.domen.ru. В самой папке wiki.domen.ru уже все файлы самой вики. Грохнуть все настройки относящиеся к URL уже пробовал.

У меня была проблема со знаком :, для служебных страниц. Я внес правило реврайта RewriteRule ^/(.*):(.*) /index.php/$1:$2 и служебные ссылки со знаком : заработали. Теперь надо такое же правило похожее применить чтобы и в названиях со знаком * тоже apache читал.
 
Не нужно никаких правил. Верните настройки по-умолчанию и настройте как скажет генератор по ссылке выше.
 
Не нужно никаких правил. Верните настройки по-умолчанию и настройте как скажет генератор по ссылке выше.
То есть у меня есть папка с сайтом domen.ru, в него я кладу папку wiki с файлами википедии, и затем прохожу процедуру генератора?
 
Либо я глупый, либо генератор полную чушь выдает. Что ему только не задавал в артикл патча. Ничего не помогло даже зайти просто на вики, на главную.

Блин, что не знает никто правила для .htaccess на символы в ЧПУ? Или на прямую apache задать. Веб не читает зараза :(
 
1. Знак вопроса в адресе - это системный символ, обозначающий, что после адреса страницы идут параметры. Никакими реврайтамии прочими настройками этот символ использовать в адресе не получится.
2. http://wot.bz/Россия*Россия
 
1. Знак вопроса в адресе - это системный символ, обозначающий, что после адреса страницы идут параметры. Никакими реврайтамии прочими настройками этот символ использовать в адресе не получится.
2. http://wot.bz/Россия*Россия
Я же говорю, что данная ошибка связана скорей всего с веб-сервером. Apache не дает право заходить на такие страницы.
 
UP. Все ещё ищу решение проблемы.
 
Назад
Верх