더 많은 URL 버전으로 리디렉션되는 많은 짧은 URL이있는 사이트에서 작업하고 있습니다. 짧은 URL은 오프라인으로 배포되고 사용자는 일반적으로 브라우저 주소 표시 줄에 URL과 짧은 URL을 기억한다는 아이디어가 있습니다. 예 : http://www.example.com/abc은 http://www.example.com/higher_education/companion/politics/abc.html
으로 리디렉션해야합니다. 또한 몇 가지 외부 링크가 있습니다. 같은 : http://www.example.com/google는 https://www.google.com
편집 할 수있는 사용자를 리디렉션합니다 - 는 http://www.example.com/elementary/def.html이 http://www.example.com/elementary/xyz.html
로 리디렉션됩니다 다른 시나리오가있다 그러나, 우리가 지금 RewriteMap
와이를 달성하고자합니다. 우리는 그것을 위해 작성한 코드는 다음과 같습니다 :httpd.conf의 RewriteMap과 .htaccess 충돌의 RewriteRule
<IfModule rewrite_module>
RewriteEngine on
RewriteMap custommap txt:/var/www/vhosts/example.com/httpdocs/map.txt
#RewriteCond %{REQUEST_URI} !^/index.php$
RewriteRule "^(.*)$" "${custommap:$0}" [R,L,NC]
</IfModule>
map.txt
에는 다음이 포함
abc http://www.example.com/higher_education/companion/politics/abc.html
google https://www.google.com
문제는 .htaccss 파일이 일부 RewriteRule의 포함되어 있습니다.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)\.html$ /index.php?sid=$1&ssid=$2 [L,NC,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /index.php?sid=$1 [L,NC,QSA]
그래서 모든 요청은 .html
표준 CMS의 기능으로 index.php
에 의해 제공됩니다 함께 제공됩니다. 그러나 이제 코드는 리디렉션 루프로 이동합니다. 누군가이 문제를 완화하기 위해 약간의 빛을 공유한다면 그것은 좋을 것입니다. Apache 버전은 2.2이므로 IF-ELSE를 사용할 수 없습니다.
감사합니다,
Aneek
RewriteMap
에서 URL을 제공하는 규칙에 대한 몇 가지 제한을 두어야
안녕하세요, 저는 이것을 시도했지만 예, 파일 확장자가없는 비트에서 해결되었습니다. 그러나 리다이렉트되어야하는 URL이 있다면, 또 다른 도전이됩니다. 어떻게해야합니까? –
'RewriteRule. + $ {custommap : $ 0} [R = 301, L, NE]'도 정상적으로 작동해야하지만 맵 파일의 키 이름에 DOT를 피할 수없는 이유는 모르겠습니다. – anubhava
고마워, 나는 이것도 확인해 보겠다. –