ホームページへの特定のURLリダイレクト

Apr 11 2020

Codeigniterで小さなスクリプトを作成しています。プッシュ通知用にOneSignalを統合したい。しかし、問題は、URLの下でホームページにリダイレクトすることです。

https://example.com/OneSignalSDKWorker.js?appId=1234567890xxxxx-xxxxx-xxx

これが私の完全な.htaccessコードです

DirectoryIndex index.php
RewriteEngine on


RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]


<IfModule mod_gzip.c>
    mod_gzip_on       Yes
    mod_gzip_dechunk  Yes
    mod_gzip_item_include file      \.(html?|txt|css|js|php|pl|jpg|png|gif)$ mod_gzip_item_include handler ^cgi-script$
    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>

そしてこれが私の基本的なCodeigniterルートです

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

$route['default_controller'] = 'controller'; $route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE; //first route $route['(:any)/(:any)'] = 'controller/method/$1/$2';
//second route
$route['(:any)'] = 'controller/method/$1';

ここで、私のコントローラーは1つまたは2つの引数を取ることができます。最初の引数(つまり、ルートの送信)のみを渡し、それがデータベースに存在しないかどうかを確認すると、ホームページにリダイレクトされます。同様に、最初のルートチェックでは、両方が存在しないため、ホームページにリダイレクトされます。

しかし、問題は、これにアクセスしようとすると、https://example.com/OneSignalSDKWorker.js?appId=1234567890xxxxx-xxxxx-xxxホームページにリダイレクトされることです。

だから私の質問は、リダイレクトルールからそれを除外する方法ですか?

回答

Croises Apr 11 2020 at 17:59

あなたはあなたのラインを変えることができます:

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico)

RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico|OneSignalSDKWorker\.js)
Dum Apr 11 2020 at 18:14

よくわかりませんが、試してみてください

最初のルートの前にこの行を追加します

$route['OneSignalSDKWorker.js(:any)'] = 'OneSignalSDKWorker.js$1';