php HTTP redirect ไม่ทำงานบน Azure App Service

Sep 02 2020

ฉันกำลังพยายามเปลี่ยนเส้นทางผู้ใช้ของฉันไปยังเว็บไซต์หนึ่งเมื่อพวกเขาไปที่จุดสิ้นสุดของฉัน https://url-shortner-in.azurewebsites.net/openfb จะชี้ไปที่ google.com

เซิร์ฟเวอร์ของฉันโฮสต์บน Azure App Service พร้อม Slim Framework v4 โดยใช้ REST API

นี่คือการเรียกร้องให้เปลี่ยนเส้นทางผู้ใช้

return $response
            ->withHeader('Location', 'http://www.google.com')
            ->withStatus(302);

ทำงานได้ดีบนเซิร์ฟเวอร์ WAMP ในพื้นที่ของฉัน ฉันกำลังเปลี่ยนเส้นทางไปยัง Google

แต่หลังจากอัปโหลดบน Azure App Service แล้วโค้ดจะไม่ทำงาน ฉันเห็นหน้าว่างหลังการเปลี่ยนเส้นทาง URL ยังคงเหมือนเดิม (URL เว็บไซต์ของฉันไม่ใช่ของ Google)

Azure มีการกำหนดค่าผิดพลาดหรือไม่

. htaccess ของฉัน

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

คำตอบ

1 JasonPan Sep 03 2020 at 11:55

ฉันขอแนะนำให้คุณเลือกแพลตฟอร์ม windows เมื่อสร้างเว็บแอพ

คุณสามารถลองสร้างweb.configไฟล์ภายใต้โฟลเดอร์ wwwroot หากไม่มีอยู่ หากคุณสามารถค้นหาไฟล์นี้ได้เมื่อทำให้เว็บแอปของคุณใช้งานได้คุณจะต้องแก้ไขไฟล์นั้น

เนื้อหาเฉพาะที่จะเพิ่มหรือแก้ไขคือสิ่งที่RewriterConfigต้องเพิ่มลงใน web.config

รูปแบบมีดังนี้:

<configSections>
 <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter" />
</configSections>
......
<RewriterConfig>
   <Rules>
      <RewriterRule>
        <LookFor>^default/([0-9]+)/([_0-9a-z-]+)</LookFor>
        <SendTo>11.aspx?id={R:1}</SendTo>
      </RewriterRule>
   </Rules>
</RewriterConfig>

สำหรับรายละเอียดเพิ่มเติมคุณสามารถดูสองโพสต์ต่อไปนี้:

Azure Web App Angular ไม่เปลี่ยนเส้นทางไปยัง www

DNN UrlRewrite (“ DotNetNuke.HttpModules.UrlRewriteModule, DotNetNuke.HttpModules”) ไม่เรียกใช้กฎการเขียนซ้ำแบบกำหนดเองบน web.config

1 floGalen Sep 03 2020 at 20:06

ขั้นตอนที่ 1 : เปิดใช้งาน Apache .htaccess

โดยค่าเริ่มต้นไฟล์. htaccess จะไม่เปิดใช้งาน

1.เปิดไฟล์คอนฟิกูเรชันโฮสต์เริ่มต้นโดยป้อนคำสั่งต่อไปนี้ในเทอร์มินัล:

sudo nano /etc/apache2/sites-available/default

2.<Directory /var/www>ค้นหาส่วนที่ระบุว่า ในส่วนนั้นเปลี่ยนAllowOverride Noneรายการเป็นall:

AllowOverride All

บันทึกไฟล์และออก

3.จากนั้นเริ่มบริการ Apache ใหม่:

sudo systemctl apache2 restart