تمرير الدليل غير الموجود كمعلمة في IIS أو Apache
-
19-09-2019 - |
سؤال
أول نظرة على عنوان URL هذا:
https://stackoverflow.com/Questions/tagged/xoxoxo/
لا يوجد هذا الدليل ولكن يمكن أن يمر Stackoverflow بطريقة أو بأخرى في الدليل الأخير كمعلمة إلى البرنامج النصي الأساسي.
هل هذا ممكن لتكوين IIS أو Apache للقيام بذلك؟ كيف؟
المحلول
وتسمى الآلية وراء هذا النوع من السلوك عنوان URL - إعادة كتابة ويمكن تنفيذها في اباتشي مع ال mod_rewrite
-Modules وفي IIS مع إما هيليون isapi_rewrite لايت (أو أحد البدائل غير الحرة التي تقدمها هيليكان) IIS 5.1. و 6 أو مع Microsoft URL إعادة كتابة الوحدة بالنسبة IIS 7..
على سبيل المثال، ستضمن الإعدادات التالية أنه سيتم نقل كل طلب لا يمكن مطابقته على ملف أو دليل موجود إلى index.php
ملف.
mod_rewrite
(.htaccess
في الدليل لجذر المستند أو في مكان ما في httpd.conf
)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR] // IF is file (with size > 0)
RewriteCond %{REQUEST_FILENAME} -l [OR] // OR is symbolic link
RewriteCond %{REQUEST_FILENAME} -d // OR is directory
RewriteRule ^.*$ - [NC,L] // DO NOTHING
RewriteRule ^.*$ index.php [NC,L] // TRANSFER TO index.php
isapi_rewrite لايت (في مربع الحوار المناسب لإعدادات IIS الخاصة بك)
// uses same syntax as mod_rewrite
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
Microsoft URL إعادة كتابة الوحدة (في الخاص بك web.config
في الدليل الجذر المستند أو مكان seome في شجرة التكوين)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="MatchExistingFiles" stopProcessing="true">
<match url="^.*$" />
<conditions logicalGrouping="MatchAny">
<add input="{REQUEST_FILENAME}" matchType="IsFile" pattern="" ignoreCase="false" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" pattern="" ignoreCase="false" />
</conditions>
<action type="None" />
</rule>
<rule name="RemapMVC" stopProcessing="true">
<match url="^.*$" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>