Я создал приложение по адресу http: // url / sdf19 /
У меня есть .htaccess, помещенный в / sdf19 /, содержащий RewriteRule для чистых URL-адресов.
Но я создал инструмент для создания PDF-файлов, который находится в подпапке / inc / tools
.
Мне нужно напрямую связать его для запуска перед заголовками.
Несмотря на несколько часов поиска, попыток использования фрагментов, генераторов и т. Д., Я не могу получить ни один запрос на http: // url / sdf19 / inc / tools
, который должен быть разрешен, без использования существующего набора RewriteRule over
Вот мой начальный файл
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC]
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC]
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC]
THINGS TRIED:
Я попытался добавить это в строку 4;
RewriteCond% {REQUEST_URI}! ^ inc / tools / [NC ]
Это дало RewriteCond: ошибку строки неверного аргумента
Я попытался добавить это в строку 2;
RewriteCond %{REQUEST_URI} ^/inc/tools/(.*)$
RewriteRule ^.*$ - [L]
Я попытался добавить .htaccess в / inc / tools
с выключенным RewriteEngine не работало.
Я пробовал использовать тестер .htaccess, указанный в верхнем посте, но хотя мой файл (см. Выше) работает в реале, он выдает «правило не соблюдается» для всего, что там есть!
TL; DR
Желаемый результат заключается в том, что я могу разрешить прямой доступ к http: // url / sdf19 / inc / tools
> всему, что я пробовал до сих пор, меня перенаправляют на базу http: // url / sdf19 /
Smá umræða um núverandi reglur þínar ...
Ég hef reynt að bæta þessu við á línu 4;
RewriteCond% {REQUEST_URI}! ^ Inc / tools / [NC]
Þetta gaf RewriteCond: slæm rökvillulaga
Vegna þess að þú hefur rangt rými í miðju CondPattern ! ^ Inc / tools /
. Þessi tjáning gefur samt ekki rétta niðurstöðu (sjá hér að neðan).
Ég hef reynt að bæta þessu við línu 2;
RewriteCond% {REQUEST_URI} ^ / inc / tools /(.*)$ Umritunarregla ^. * $ - [L]
Þú ert nálægt þessu. Hins vegar inniheldur REQUEST_URI
netþjónabreytan alla URL-slóðina, ekki URL-slóðina miðað við þar sem .htaccess
skráin er staðsett. Þannig að þetta þyrfti að vera af forminu:
RewriteCond %{REQUEST_URI} ^/sdf19/inc/tools/
RewriteRule ^ - [L]
Þetta þyrfti að fara nálægt toppnum á .htaccess
skránni þinni, strax eftir RewriteEngine On
tilskipunina. (. *) $
í lok CondPattern var óþarfi, sem og RewriteRule
mynstur ^. * $
. Hins vegar er hægt að skrifa þetta á skilvirkari hátt sem ein tilskipun og prófa með RewriteRule
mynstri í staðinn. Þú getur síðan sleppt / sdf19
undirmöppunni. Til dæmis:
RewriteRule ^inc/tools/ - [L]
Ég hef prófað að bæta við
.htaccess
í/ inc / tool
s meðRewriteEngine OFF
, virkaði ekki.
Jæja, að hefði átt að virka. (Nema kannski að þú hafir mod_alias tilskipanir í foreldra .htaccess
skránni sem stangast á?) Svo, það er óljóst, miðað við það sem þú hefur lýst í spurningunni af hverju það gerði það ekki. Ertu með aðrar tilskipanir í .htaccess
skránni þinni?
öllu sem ég hef reynt hingað til fæ ég mér vísað til grunn
http: // url / sdf19 /
Það er líka skrýtið, vegna þess að ekkert sem þú hefur sýnt hingað til myndi leiða til ytri tilvísunar. Ertu með aðrar tilskipanir í .htaccess
skránni þinni? Mod_alias tilvísun
eða RedirectMatch
tilskipun kannski?
RewriteCond% {REQUEST_FILENAME}! -F Skrifaðu aftur% {REQUEST_FILENAME}! -D RewriteRule ^ ([a-z] +) \ /? $ Index.php? Page = $ 1 [NC] RewriteRule ^ ([a-z] +) \ / ([0-9] +) \ /? $ Index.php? Page = $ 1 & id = $ 2 [NC] RewriteRule ^ ([a-z] +) \ / ([a-z] +) \ /? $ Index.php? Page = $ 1 & action = $ 2 [NC] RewriteRule ^ ([a-z] +) \ / ([a-z] +) \ / [[0-9] +) \ /? $ Index.php? Page = $ 1 & action = $ 2 & id = $ 3 [NC]
hugsanlegt vandamál með þessar tilskipanir er að RewriteCond
tilskipanir eiga aðeins við um fyrstu RewriteRule
sem fylgir. Svo, 2., 3. og 4. RewriteRule
tilskipunin hér að ofan er framkvæmd án skilyrða og skýrir hvers vegna beiðnir um / sdf19 / inc / tools
eru teknar af þeim þriðja
Þú þarft annaðhvort að hafa sömu skilyrði fyrir í hverri RewriteRule
(þ.e. reglan er aðeins afgreidd þegar beiðnin er ekki kortlögð í skrá og er ekki kortlögð í skráasafn ). Eða hafið merkingu þeirra og komið í veg fyrir frekari vinnslu ef beðið er um skrá eða skrá - þetta getur þó farið eftir því hvort síðar eru fleiri tilskipanir í skránni sem enn þarf að vinna úr við þessar aðstæður.
Þú vantar líka L
fánar í þessum tilskipunum, þannig að vinnsla heldur (að óþörfu?) Áfram í gegnum skjalið þitt.
Svo reyndu eftirfarandi í staðinn:
# Prevent further processing if a file or directory is requested
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# Route other URLs
RewriteRule ^([a-z]+)\/?$ index.php?page=$1 [NC,L]
RewriteRule ^([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&id=$2 [NC,L]
RewriteRule ^([a-z]+)\/([a-z]+)\/?$ index.php?page=$1&action=$2 [NC,L]
RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)\/?$ index.php?page=$1&action=$2&id=$3 [NC,L]
Вы пробовали добавить "RewriteEngine On" в свой файл конфигурации?
run_rewritemap_programs(server_rec *s , apr_pool_t *p){
if (conf->state == ENGINE_DISABLED) { // usage of "RewriteEngine"
return APR_SUCCESS; // early return
rewritemap_program(...); // usage of "RewriteRule"
}
Поскольку по умолчанию для "RewriteEngine" установлено значение "Off", из фрагмента кода выше, "RewriteRule" включен только если в файле конфигурации явно указано «RewriteEngine On».
Еще одна вещь, о которой стоит упомянуть, это то, что по умолчанию для параметра «RewriteEngine» установлено значение «Выкл.», поэтому установка «RewriteEngine Off» сама по себе является скрытой ошибкой неправильной настройки, поскольку она не влияет на поведение системы.