programing

htaccess에서의 Wordpress 및 CI 개서 규칙

lastmoon 2023. 2. 26. 10:26
반응형

htaccess에서의 Wordpress 및 CI 개서 규칙

.com.examplecom WordPress에 했습니다., CodeIgniter에 .ci here(폴더)example.com/ci/,ciregister는, 의 으로, 동작 은, 「CI」 의 URL 입니다.example.com/ci/register. https "URL" https:// "URL"로

URL이 .example.com/hotel,hotelWordPress admin 。정상적으로 동작합니다.

을 CI처럼 .example.com/hotel/ci/register이 'URL'처럼 하면 될 것 같습니다example.com/hotel/ci/register는 ''를 추가하다.htaccess의 경우example.com/hotel/ci/register은 나에게 보여 주고 .404 error, 그럼 이제 제가 에서 다음을 해봤습니다.routes.phpfilename을 클릭합니다.

$route['default_controller'] = 'register';
$route['404_override'] = 'register';

이 "URL"example.com/hotel/ci/register동작하고 있습니다만, 이것은 올바른 방법이 아닙니다.다음으로 컨트롤러가 많아지면 동작하지 않습니다.

주의: 생성할 수 없습니다.hotelWordPress 。「 」를 hotelWordPress URL example.com/hotel/ 입니다.가 WordPress로 .hotel그래서만들어도 .hotelexample.com=myurl.com.example.com=myurl.com 를 해 주세요.

나는 다른 좋은 해결책을 찾아야 해.조언이나 안내가 있으면 대단히 감사하겠습니다.

press하다의 입니다.htaccess:

# BEGIN WordPress
   <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^/?hotel/ci/register(/.*)?$ /ci/$1 [L]
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
# END WordPress

은 저의 입니다.htaccess:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
</IfModule>

미흥로운문! Wordpress code Codeigniter code Docker를 만들었습니다.hotel및 WP 페이지Register컨트롤러와 뷰를 CI로 표시하고 테스트를 받았습니다.이 일에 너무 오랜 시간을 들였지만

★★★★★★★★★★★★★★★★★★★★★★★★★★★」.htaccess@처럼 @tobiv는 @tobiv와 @tobiv 사이에 도 넣지 BEGIN/END WordPressWP 업데이트에 의해 영향을 받을 수 있기 때문에 코멘트를 입력합니다.리다이렉트는 표준 WP 규칙보다 우선해야 하므로 파일 상단에 추가합니다.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^hotel/ci/register /ci/register [L]
</IfModule>

# BEGIN WordPress
# ... These are the default, unchnaged WP rules
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

<IfModule mod_rewrite.c> ★★★★★★★★★★★★★★★★★」RewriteEngine On복제되어 있어 복잡해 보이지만 새로운 규칙이 먼저 실행되어야 하기 때문에 WP 규칙보다 먼저 요청을 처리할 수 있습니다.

는 변경할 .htaccess일,,, 기기기있있있있 됩됩됩됩됩됩됩은 Codeigniter인 Codeigniter에 합니다.ci/.htaccess:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

에서는, 「 」https://example.com/hotel/ci/register코드 시그니터 404입니다.네이블로 되어 (「」를 참조).config/config.php알 수

ERROR - 2017-11-14 17:57:20 --> 404 Page Not Found: Hotel/ci

그리고 여기 문제의 근본이 있습니다.초기 리다이렉트는 내부 리다이렉트(브라우저에 표시되는 URL은 변경되지 않음)이므로 처리를 위해 수신되는 URI 코드 시그니터는 브라우저 주소 표시줄에 계속 표시됩니다.hotel/ci/register코드 시그니터는 다음과 같은 두 가지 방법으로 요청을 처리하려고 합니다.

  • 를 찾습니다.application/config/routes.php

  • ''를 .application/controllers/Hotel.php라고 하는 ci;

.Hotel이러한 요구를 처리하는 방법을 설명하는 루트가 없기 때문에 Boom 404가 됩니다.

간단한 해결책 중 하나는 이 요구를 처리할 루트를 작성하는 것입니다.

$route['hotel/ci/register'] = 'register/index';

이제 ★★★★★★★★★★★★★★★★★.https://example.com/hotel/ci/register가 있다

주의:

  • 를 「」로 한다.register )$route['default_controller'] = 'register';는 )을 뜻합니다.https://example.com/ci/레지스터도 표시됩니다.네가 그걸 원하는지 모르겠어.이 URL과 같은 할 수 .https://example.com/hotel/ci/register404번?

  • 해 주세요.$route['404_override'] = 'register';루트

  • CIbase_url는 이 문제와 관련이 없습니다.하다, 하다, 하다, 확확확 필필다다 만있 만있다, 어느쪽인가를 할 수 .http://example.com/ci/ ★★★★★★★★★★★★★★★★★」http://example.com/hotel/ci/맞을 것 같아요

  • 에서 이 인지 잘 ..htaccess을 사용하다

    RewriteCond $1 !^(index\.php|resources|robots\.txt)
    

    기존 기본 조건이 디스크에 있는 파일 및 디렉토리를 이미 건너뜁니다.그게 뭐냐면!-f ★★★★★★★★★★★★★★★★★」!-d조건은 "요청된 패턴이 디스크의 파일 또는 디렉토리와 일치하지 않으면 리디렉션"을 의미합니다.

    「 」가 robots.txt파일(「」의 파일)ci/dir하면 dir)를 요청하게 .https://example.com/ci/robots.txt , . . . . . . . .!-f즉, 요구가 처리됩니다.또, 「」, 「」, 「」, 「」, 「」, 「」, 「」, 「」, 「재기입」은 행해지지 않습니다.robots.txt이치노일일도 입니다.index.php라고 하는 ci/resources 누가 부탁하다.https://example.com/ci/resources , . . . . . . . .!-d조건은 실패하고 리다이렉트는 건너뛰며 요청은 성공합니다.

    는 네가 어떻게 잘 모르겠어.resources그 상태를 완전히 제거할 수 있을지도 모릅니다.

  • Codeigniter 없는 (「Codeigniter URL」외)https://example.com/hotel/ci/register 이필요없다는 것을 . CI를 수 . CI를 사용하다.htaccess★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.RewriteRule"CHANGE: " "CHANGE: "CHANGE:

    RewriteRule ^hotel/ci/register /ci/index.php/register [L]
    

    CI CI를 합니다..htacces

올바른 방향으로 가고 있다고 생각합니다.이렇게 해보세요.

# BEGIN WordPress
   <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^/hotel/ci(/.*)?$ /ci/$1 [L]  # remove the register part 
                                              # so that it would be handled by CI
                                              # also remove the "?" in front of hotel
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
# END WordPress

CI htaccess를 그대로 유지합니다.

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA] 
</IfModule>

합니다.config.php로의 이행(URL)

$config['base_url'] = "http://example.com/hotel/ci/";

에 대한 될 는 생각하지 않지만, 한다면, 저는 이 을 사용할 입니다.routes코드 예를 참조해 주세요.

$route['(:any)/ci/register']  = "register";

?(:any)는 첫 내의 하며, 그 후할 수 있습니다.i defined uri 、 을 、 을 、 을을을 URL 。ci/register이렇게도 할 수 있어요.

$route['(:any)/register']  = "here_you_can_add_your_controller/function";

url을 이렇게 누르면 됩니다.

http://www.example.com/any_word_you_want/register

꼭 해야 돼요.echo브라우저에 표시됩니다.

기본 URL의 호텔 단어를 @am05mhz의 답변으로 정의할 수도 있지만, 향후 URL에 2개의 단어가 추가될 수 있기 때문에 좋은 생각은 아닙니다.

주의: 위의 코드 예는 다음 경우에만 작동합니다..htaccess 할 수 합니다..htaccess당신을 위한 일이에요.라우팅에 대한 자세한 내용은 코드 시그니터 URI 라우팅 설명서를 참조하십시오.

htaccess [P]대신 플래그를 지정합니다.

이 "(타깃)"으로 합니다.http://그렇지 않으면 대체 문자열이 내부 파일 경로로 처리됩니다.

아래 코드를 확인합니다.

# BEGIN WordPress
   <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /

    RewriteRule ^/?hotel/ci/(.*)?$ http://example.com/ci/$1 [P]

    # If you want rewrite any URI as long it has */ci/* in it. 
    # Use the following rule instead.
    # RewriteRule ^(.*)/ci/(.*)?$ http://example.com/ci/$1 [P]

    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
# END WordPress

또한 CI의 기본 URL을 업데이트할 필요가 없습니다.빈 문자열이면 됩니다.

$config['base_url'] = '';

도움이 됐으면 좋겠다.

크::
https://httpd.apache.org/docs/current/rewrite/flags.html#flag_phttpshttpd.apache.org/docs/current//flags.html#flag_p

언급URL : https://stackoverflow.com/questions/46787656/wordpress-and-ci-rewrite-rule-in-htaccess

반응형